--- title: "hadoop2 集群部署" date: 2023-05-23T10:00:00+08:00 lastmod: 2023-05-23T10:00:00+08:00 keywords: [] tags: ["hadoop"] categories: ["storage"] --- ## 环境 操作系统 | 主机名 | 地址 | 数据目录 | 运行组件 ---- | ---- | ---- | ---- | ---- Rocky9 | hdp-nn | 192.168.8.1/24 | /data/hdp-nn | Namenode Rocky9 | hdp-snn | 192.168.8.2/24 | /data/hdp-snn | SecondaryNamenode Rocky9 | hdp-rm | 192.168.8.3/24 | - | ResourceManager Rocky9 | hdp-slave10 | 192.168.8.10/24 | /data/hdp-dn | Datanode, NodeManager Rocky9 | hdp-slave11 | 192.168.8.11/24 | /data/hdp-dn | Datanode, NodeManager ## 服务器初始配置 - 在**全部主机**上执行如下操作 - 禁用防火墙 - 禁用 selinux - 配置时间同步 - 配置主机名解析 ```bash echo "192.168.8.1 hdp-nn" >> /etc/hosts echo "192.168.8.2 hdp-snn" >> /etc/hosts echo "192.168.8.3 hdp-dn" >> /etc/hosts echo "192.168.8.10 hdp-slave10" >> /etc/hosts echo "192.168.8.11 hdp-slave11" >> /etc/hosts ``` ## ssh 免密登录 - 配置 **hdp-nn** 可以 ssh 免密登录 hdp-nn、hdp-snn 和 hdp-slaveXX ```bash # 在 hdp-nn 上执行如下操作 ssh-copy-id hdp-nn ssh-copy-id hdp-snn ssh-copy-id hdp-slave10 ssh-copy-id hdp-slave11 ``` - 配置 **hdp-rm** 可以 ssh 免密登录 hdp-rm 和 hdp-slaveXX ```bash # 在 hdp-rm 上执行如下操作 ssh-copy-id hdp-rm ssh-copy-id hdp-slave10 ssh-copy-id hdp-slave11 ``` ## 部署 jdk8 环境 - 在**全部主机**上执行如下操作 - 上传 jdk-8u311-linux-x64.tar.gz,解压 ```bash tar zxf jdk-8u311-linux-x64.tar.gz mv jdk1.8.0_311 /opt/jdk ``` - 配置 jdk 环境变量 ```bash echo 'export JAVA_HOME=/opt/jdk' > /etc/profile.d/jdk.sh echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile.d/jdk.sh source /etc/profile.d/jdk.sh ``` ## 部署 hadoop 环境 - 在**全部主机**上执行如下操作 - 下载 hadoop 2.10.2 部署包,解压 ```bash curl -LO https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.10.2/hadoop-2.10.2.tar.gz tar zxf hadoop-2.10.2.tar.gz mv hadoop-2.10.2 /opt/hdp ``` - 配置 hadoop 环境变量 ```bash echo 'export HADOOP_HOME=/opt/hdp' > /etc/profile.d/hdp.sh echo 'export PATH=$HADOOP_HOME/bin:$PATH' >> /etc/profile.d/hdp.sh # 不推荐把 $HADOOP_HOME/sbin 加入环境变量 PATH. source /etc/profile.d/hdp.sh ``` ### 修改 hadoop-env.sh - 编辑 $HADOOP_HOME/etc/hadoop/hadoop-env.sh,指定 JAVA_HOME 环境变量 ```bash export JAVA_HOME=/opt/jdk ``` ### 修改 core-site.xml - 编辑 $HADOOP_HOME/etc/hadoop/core-site.xml,参考内容如下 ```xml fs.defaultFS hdfs://hdp-nn:8020 hadoop.tmp.dir /tmp/hdp hadoop.proxyuser.root.hosts * hadoop.proxyuser.root.groups * ``` ### 修改 hdfs-site.xml - 编辑 $HADOOP_HOME/etc/hadoop/hdfs-site.xml,参考内容如下 ```xml dfs.namenode.name.dir /data/hdp_nn dfs.namenode.checkpoint.dir /data/hdp_snn dfs.datanode.data.dir /data/hdp_dn dfs.namenode.http-address hdp-nn:9870 dfs.namenode.secondary.http-address hdp-snn:9868 dfs.replication 2 dfs.webhdfs.enabled true ``` ### 修改 yarn-site.xml - 编辑 $HADOOP_HOME/etc/hadoop/yarn-site.xml,参考内容如下 ```xml yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname hdp-rm yarn.resourcemanager.webapp.address hdp-rm:8088 yarn.log-aggregation-enable true yarn.log-aggregation.retain-seconds 604800 yarn.nodemanager.vmem-check-enabled false ``` ### 修改 mapred-env.sh - 编辑 $HADOOP_HOME/etc/hadoop/mapred-env.sh,指定 JAVA_HOME 环境变量 ```bash export JAVA_HOME=/opt/jdk ``` ### 修改 mapred-site.xml - 编辑 $HADOOP_HOME/etc/hadoop/mapred-site.xml,参考内容如下 ```xml mapreduce.framework.name yarn mapreduce.jobhistory.address hdp-rm:10020 mapreduce.jobhistory.webapp.address hdp-rm:19888 ``` ### 修改 slaves - 编辑 $HADOOP_HOME/etc/hadoop/slaves,替换成全部的 slave 主机,参考内容如下 ```txt hdp-slave10 hdp-slave11 ``` ### 创建临时目录和数据目录 - 在 **hdp-nn** 上创建临时目录和数据目录 ```bash mkdir /tmp/hdp mkdir /data/hdp_nn ``` - 在 **hdp-snn** 上创建临时目录和数据目录 ```bash mkdir /tmp/hdp mkdir /data/hdp_snn ``` - 在 **hdp-rm** 上创建临时目录 ```bash mkdir /tmp/hdp ``` - 在 **hdp-slaveXX** 上创建临时目录和数据目录 ```bash mkdir /tmp/hdp #建议挂载独立盘 mkdir /data/hdp_dn #建议挂载独立盘 ``` ## 启动 hadoop 集群 - 在 **hdp-nn** 上启动 dfs 集群 ```bash /opt/hdp/sbin/start-dfs.sh ``` - 在 **hdp-rm** 上启动 yarn 集群 ```bash /opt/hdp/sbin/start-yarn.sh ```