HDFS与CentOS的常见集成方式
在centos环境中,与hdfs的集成通常从本地客户端访问、应用通过hadoop sdk调用、与yarn/mapreduce协同计算、与spark等大数据组件读写、以及多节点集群部署与网络打通等路径展开,覆盖运维、开发到平台化接入的全流程。
方式总览与适用场景
| 集成方式 |
典型场景 |
关键配置或命令 |
主要要点 |
| 本地hadoop客户端直连 |
运维脚本、临时导入导出 |
core-site.xml 设置 fs.defaultfs;hdfs dfs -ls / |
配置与namenode一致,注意防火墙与权限 |
| 应用通过hadoop client sdk |
java/scala/py应用读写hdfs |
maven依赖 hadoop-client;使用hdfs api |
依赖版本需与集群一致,注意kerberos/ssl |
| 与yarn/mapreduce协同 |
批处理作业调度与执行 |
mapred-site.xml 指定 yarn;yarn-site.xml 配置rm |
资源调度与容器化执行,日志与容错由yarn管理 |
| 与spark读写hdfs |
spark sql、批流作业 |
spark-defaults.conf 设置hdfs路径;spark on yarn |
统一hdfs作为数据湖存储,注意序列化与压缩 |
| 多节点集群部署与网络打通 |
生产级hdfs集群 |
workers/slaves、hosts、ssh免密、firewall-cmd放行端口 |
高可用、数据目录权限、时间同步与监控告警 |
本地客户端直连namenode
- 安装与配置
- 安装java 8,配置 hadoop_home 与 path;编辑 $hadoop_home/etc/hadoop/core-site.xml 设置 fs.defaultfs=hdfs://namenode:9000;编辑 hdfs-site.xml 设置 dfs.replication、dfs.namenode.name.dir、dfs.datanode.data.dir。首次启动前执行 hdfs namenode -format,随后用 start-dfs.sh 启动。
- 网络与防火墙
- 开放常用端口(示例):8020/9000(rpc)、50070(nn web)、50075(dn web)、50010/50020(dn数据传输)、8088(rm web)等,或临时停用防火墙用于联调。
- 验证
- 使用 hdfs dfs -ls /、hdfs dfsadmin -report 验证连通与datanode状态。
应用通过hadoop client sdk集成
- 依赖与api
- maven引入 hadoop-client(版本与集群一致),使用 filesystem、path 等api进行上传、下载、列目录、删除等操作。
- 配置与运行
- 将 core-site.xml、hdfs-site.xml 放入应用classpath或容器/hadoop配置目录,确保与集群配置一致;在centos上以普通用户或服务账号运行,注意目录权限与umask。
- 典型用途
- 数据迁移工具、etl作业、后台服务的文件落地与读取。
与yarn和mapreduce协同
- 配置
- mapred-site.xml 设置 mapreduce.framework.name=yarn;yarn-site.xml 配置 yarn.resourcemanager.hostname 或 address,启用 shuffle 服务。
- 提交与监控
- 使用 hadoop jar 或 yarn jar 提交mapreduce作业,通过 http://rm-host:8088 查看应用状态与日志。
- 适用场景
- 传统批处理、报表计算、基于hdfs的大规模离线任务。
与spark读写hdfs
- 配置
- 在 spark-defaults.conf 或代码中指定 hdfs:// 路径;部署模式可选 standalone 或 on yarn。
- 示例
- spark 读取/写入 hdfs://namenode:9000/path,验证数据落盘与读取一致性。
- 适用场景
- spark sql、结构化/半结构化数据处理、流式作业与机器学习管道。
多节点集群部署与网络打通
- 节点规划与配置
- 在 $hadoop_home/etc/hadoop/workers(或slaves)中列出所有datanode主机名;配置 /etc/hosts 或dns解析;配置ssh免密登录以方便启停集群。
- 启动与验证
- 在namenode执行 start-dfs.sh(如需yarn则 start-yarn.sh);用 jps 检查 namenode、datanode、resourcemanager、nodemanager 等关键进程;访问 namenode web(如50070)与rm web(8088)确认健康状态。
- 运维要点
- 时间同步(ntp/chrony)、数据目录权限、磁盘与网络健康检查、告警与日志轮转。