CentOS与HDFS集成怎样实现
导读:在 CentOS 上集成 HDFS 的完整落地方案 一 环境准备与基础配置 安装 Java(Hadoop 依赖 Java,建议 Java 8): 执行:sudo yum install -y java-1.8.0-openjdk-dev...
在 CentOS 上集成 HDFS 的完整落地方案
一 环境准备与基础配置
- 安装 Java(Hadoop 依赖 Java,建议 Java 8):
- 执行:
sudo yum install -y java-1.8.0-openjdk-devel - 验证:
java -version
- 执行:
- 配置 SSH 免密(Hadoop 启动脚本依赖):
- 生成密钥:
ssh-keygen -t rsa - 本机免密:
ssh-copy-id localhost - 集群环境需将公钥分发到各节点:
ssh-copy-id < 目标节点主机名/IP>
- 生成密钥:
- 主机名与网络:
- 配置 /etc/hosts 保证各节点可互相解析
- 关闭或放行防火墙/SELinux(或按需放行端口)
- 下载并解压 Hadoop(示例版本 3.3.1):
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gztar -xzvf hadoop-3.3.1.tar.gz -C /usr/local/ & & mv /usr/local/hadoop-3.3.1 /usr/local/hadoop
- 环境变量(建议写入 /etc/profile.d/hadoop.sh):
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdkexport HADOOP_HOME=/usr/local/hadoopexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin- 使生效:
source /etc/profile.d/hadoop.sh
- 目录准备(示例):
mkdir -p /usr/local/hadoop/data/{ namenode,datanode}
二 配置 HDFS 核心文件
- 配置 $HADOOP_HOME/etc/hadoop/core-site.xml:
- 设置默认文件系统(示例为 8020 端口,亦可使用 9000):
< configuration> < property> < name> fs.defaultFS< /name> < value> hdfs://namenode:8020< /value> < /property> < /configuration>
- 设置默认文件系统(示例为 8020 端口,亦可使用 9000):
- 配置 $HADOOP_HOME/etc/hadoop/hdfs-site.xml:
- 示例(单节点或测试环境可将副本设为 1):
< configuration> < property> < name> dfs.replication< /name> < value> 1< /value> < /property> < property> < name> dfs.namenode.name.dir< /name> < value> /usr/local/hadoop/data/namenode< /value> < /property> < property> < name> dfs.datanode.data.dir< /name> < value> /usr/local/hadoop/data/datanode< /value> < /property> < /configuration>
- 示例(单节点或测试环境可将副本设为 1):
- 可选:配置 YARN 与 MapReduce(如需运行作业)
- yarn-site.xml:
< configuration> < property> < name> yarn.resourcemanager.hostname< /name> < value> resourcemanager< /value> < /property> < property> < name> yarn.nodemanager.aux-services< /name> < value> mapreduce_shuffle< /value> < /property> < property> < name> yarn.nodemanager.aux-services.mapreduce.shuffle.class< /name> < value> org.apache.hadoop.mapred.ShuffleHandler< /value> < /property> < /configuration> - mapred-site.xml:
< configuration> < property> < name> mapreduce.framework.name< /name> < value> yarn< /value> < /property> < /configuration>
- yarn-site.xml:
- 说明:
- 生产环境建议将 dfs.replication 设为 3,并确保 dfs.datanode.data.dir 指向多块磁盘以提升吞吐与可靠性。
三 启动与验证
- 初始化 NameNode(仅首次):
hdfs namenode -format
- 启动服务:
- 仅 HDFS:
start-dfs.sh - 含 YARN:
start-yarn.sh
- 仅 HDFS:
- 进程健康检查:
jps(应看到 NameNode、DataNode,如启用 YARN 则还有 ResourceManager、NodeManager)
- 集群与存储状态:
hdfs dfsadmin -report
- Web 管理界面:
- HDFS NameNode:http://:50070
- YARN ResourceManager:http://:8088
- 基本文件操作验证:
hdfs dfs -mkdir -p /user/testhdfs dfs -put /path/to/localfile /user/testhdfs dfs -ls /user/test
四 客户端集成与常用操作
- 作为客户端接入已有集群:
- 在客户端安装同版本 Hadoop,将 core-site.xml 与 hdfs-site.xml 配置为与集群一致(尤其是 fs.defaultFS 指向 NameNode)
- 直接使用命令行工具:
- 列目录:
hdfs dfs -ls / - 上传:
hdfs dfs -put /local/path /hdfs/path - 下载:
hdfs dfs -get /hdfs/path /local/path
- 列目录:
- 在 Java 应用中访问 HDFS:
- 添加依赖(示例版本 3.3.1):
< dependency> < groupId> org.apache.hadoop< /groupId> < artifactId> hadoop-client< /artifactId> < version> 3.3.1< /version> < /dependency> - 使用 Hadoop API 进行读写(FileSystem、IOUtils 等)。
- 添加依赖(示例版本 3.3.1):
五 常见问题与优化建议
- 端口与防火墙:
- 常见端口包含 8020/9000(RPC)、50070(NameNode Web)、8088(YARN Web) 等;确保节点间与客户端到集群的访问策略允许这些端口
- SSH 与主机解析:
- 启动脚本依赖 SSH 免密;各节点需通过 /etc/hosts 或 DNS 正确解析主机名
- 时间与权限:
- 建议 NTP 同步时间;如启用 Kerberos/HDFS ACL,需完成相应安全配置
- 数据与目录:
- 确保 dfs.namenode.name.dir / dfs.datanode.data.dir 所在磁盘健康且有足够空间;生产环境使用多副本(如 3)与多磁盘
- 高可用(HA)与扩展:
- 生产集群建议引入 Zookeeper 实现 NameNode HA,并配合 JournalNode 等组件保障元数据一致性与故障切换能力。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS与HDFS集成怎样实现
本文地址: https://pptw.com/jishu/781443.html
