hadoop2 集群部署
文章目录
环境
| 操作系统 | 主机名 | 地址 | 数据目录 | 运行组件 |
|---|---|---|---|---|
| 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
- 配置时间同步
- 配置主机名解析
1 2 3 4 5echo "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
1 2 3 4 5# 在 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
1 2 3 4# 在 hdp-rm 上执行如下操作 ssh-copy-id hdp-rm ssh-copy-id hdp-slave10 ssh-copy-id hdp-slave11
部署 jdk8 环境
-
在全部主机上执行如下操作
-
上传 jdk-8u311-linux-x64.tar.gz,解压
1 2tar zxf jdk-8u311-linux-x64.tar.gz mv jdk1.8.0_311 /opt/jdk -
配置 jdk 环境变量
1 2 3echo '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 部署包,解压
1 2 3curl -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 环境变量
1 2 3 4echo '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 环境变量
1export JAVA_HOME=/opt/jdk
修改 core-site.xml
- 编辑 $HADOOP_HOME/etc/hadoop/core-site.xml,参考内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22<configuration> <property> <!-- namenode 的 hdfs 协议通信地址 --> <name>fs.defaultFS</name> <value>hdfs://hdp-nn:8020</value> </property> <property> <!-- hadoop 集群存储临时文件的目录,datanode 里建议挂载独立盘 --> <name>hadoop.tmp.dir</name> <value>/tmp/hdp</value> </property> <property> <!-- hive beeline 登录用户 root --> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <!-- hive beeline 登录用户 root --> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> </configuration>
修改 hdfs-site.xml
- 编辑 $HADOOP_HOME/etc/hadoop/hdfs-site.xml,参考内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37<configuration> <property> <!-- namenode 元数据存放位置,可指定多个目录(用逗号分隔)实现容错 --> <name>dfs.namenode.name.dir</name> <value>/data/hdp_nn</value> </property> <property> <!-- secondary namenode 镜像数据存放位置,可指定多个目录(用逗号分隔)实现容错 --> <name>dfs.namenode.checkpoint.dir</name> <value>/data/hdp_snn</value> </property> <property> <!-- datanode 数据块存放位置,可指定多个目录(用逗号分隔)实现容错 --> <name>dfs.datanode.data.dir</name> <value>/data/hdp_dn</value> </property> <property> <!-- namenode 的 Web UI 访问地址 --> <name>dfs.namenode.http-address</name> <value>hdp-nn:9870</value> </property> <property> <!-- secondary namenode 的主机和端口 --> <name>dfs.namenode.secondary.http-address</name> <value>hdp-snn:9868</value> </property> <property> <!-- hdfs 副本数量,默认3,这里设置为2,保证两个 datanode 时数据有冗余 --> <name>dfs.replication</name> <value>2</value> </property> <property> <!-- 启用 webhdfs api --> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>
修改 yarn-site.xml
- 编辑 $HADOOP_HOME/etc/hadoop/yarn-site.xml,参考内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <!--resourcemanager 的主机名--> <name>yarn.resourcemanager.hostname</name> <value>hdp-rm</value> </property> <property> <!-- resourcemanager 的 Web UI 访问地址 (默认端口8088) --> <name>yarn.resourcemanager.webapp.address</name> <value>hdp-rm:8088</value> </property> <property> <!-- (可选) 开启日志聚集功能,方便在Web UI上查看已完成任务的日志 --> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <!-- (可选) 日志保留时间(7天) --> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> <property> <!-- 使用 tez 时需关闭 yarn 虚拟内存检查 --> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> </configuration>
修改 mapred-env.sh
- 编辑 $HADOOP_HOME/etc/hadoop/mapred-env.sh,指定 JAVA_HOME 环境变量
1export JAVA_HOME=/opt/jdk
修改 mapred-site.xml
- 编辑 $HADOOP_HOME/etc/hadoop/mapred-site.xml,参考内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <!-- MapReduce JobHistory Server 地址 --> <name>mapreduce.jobhistory.address</name> <value>hdp-rm:10020</value> </property> <property> <!-- MapReduce JobHistory Server Web UI 地址 (默认端口19888) --> <name>mapreduce.jobhistory.webapp.address</name> <value>hdp-rm:19888</value> </property> </configuration>
修改 slaves
- 编辑 $HADOOP_HOME/etc/hadoop/slaves,替换成全部的 slave 主机,参考内容如下
1 2hdp-slave10 hdp-slave11
创建临时目录和数据目录
-
在 hdp-nn 上创建临时目录和数据目录
1 2mkdir /tmp/hdp mkdir /data/hdp_nn -
在 hdp-snn 上创建临时目录和数据目录
1 2mkdir /tmp/hdp mkdir /data/hdp_snn -
在 hdp-rm 上创建临时目录
1mkdir /tmp/hdp -
在 hdp-slaveXX 上创建临时目录和数据目录
1 2mkdir /tmp/hdp #建议挂载独立盘 mkdir /data/hdp_dn #建议挂载独立盘
启动 hadoop 集群
-
在 hdp-nn 上启动 dfs 集群
1/opt/hdp/sbin/start-dfs.sh -
在 hdp-rm 上启动 yarn 集群
1/opt/hdp/sbin/start-yarn.sh
文章作者 Colben
上次更新 2023-05-23