可行性与总体思路
在Debian上完全可以自定义Hadoop参数。做法与在其他 Linux 发行版一致:编辑位于**$HADOOP_HOME/etc/hadoop/目录下的配置文件(如core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml**),按需调整参数后重启相应服务即可生效。Hadoop 并不依赖特定的 Linux 发行版,配置路径与参数体系在 Debian 上完全相同。
配置文件与常用参数
- 核心配置(core-site.xml)
- fs.defaultFS:HDFS 默认文件系统地址,如:hdfs://namenode:9000
- hadoop.tmp.dir:Hadoop 临时目录,如:/usr/local/hadoop/tmp
- HDFS 配置(hdfs-site.xml)
- dfs.replication:副本数,如:3
- dfs.namenode.name.dir:NameNode 元数据目录,如:/usr/local/hadoop/hdfs/namenode
- dfs.datanode.data.dir:DataNode 数据目录,如:/usr/local/hadoop/hdfs/datanode
- 可选:Web 界面地址(Hadoop 3.x)dfs.namenode.http-address:0.0.0.0:9870
- YARN 配置(yarn-site.xml)
- yarn.resourcemanager.hostname:ResourceManager 主机名,如:namenode
- yarn.nodemanager.aux-services:mapreduce_shuffle
- 可选:虚拟内存检测(虚拟机环境常见)yarn.nodemanager.vmem-check-enabled:false
- MapReduce 配置(mapred-site.xml)
- mapreduce.framework.name:yarn
- 可选:历史服务器地址(示例)mapreduce.jobhistory.address:localhost:10020
- 环境脚本(hadoop-env.sh)
- 显式设置JAVA_HOME,如:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
- 节点清单
- Hadoop 3.x 使用workers文件列出所有DataNode主机名;Hadoop 2.x 使用slaves文件(两者功能相同)。
修改生效与验证
- 使环境变量生效
- 在**~/.bashrc或/etc/profile**中设置并生效:
- export HADOOP_HOME=/usr/local/hadoop
- export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 执行:source ~/.bashrc(或 source /etc/profile)
- 首次部署初始化
- 在 NameNode 上执行:hdfs namenode -format
- 启动与验证
- 启动服务:start-dfs.sh、start-yarn.sh
- 查看进程:jps(应见到 NameNode、DataNode、ResourceManager、NodeManager 等)
- Web 验证(默认端口示例):
- HDFS NameNode:http://:9870(Hadoop 3.x)
- YARN ResourceManager:http://:8088
- MapReduce JobHistory:http://:19888。
多机部署与网络要点
- 主机名与解析
- 在**/etc/hosts或 DNS 中为各节点配置IP-主机名**映射,确保节点间可互相解析与通信。
- SSH 免密登录
- 在主节点生成密钥并分发到各节点,便于脚本启动集群服务:
- ssh-keygen -t rsa
- ssh-copy-id hadoop@node2(对各节点重复)
- 一致性
- 确保各节点的HADOOP_HOME、JAVA_HOME、配置文件保持一致,再启动集群。
实用建议
- 目录与权限
- 为dfs.namenode.name.dir、dfs.datanode.data.dir、hadoop.tmp.dir等目录设置专属路径与合适的权限/属主,避免因权限导致启动失败。
- 资源与队列
- 结合节点资源在yarn-site.xml中调整容器内存(如yarn.nodemanager.resource.memory-mb),并在capacity-scheduler.xml中配置队列与容量,提升资源利用率与隔离性。
- 版本差异
- Hadoop 3.x 使用workers;Hadoop 2.x 使用slaves,升级或迁移时注意该差异。