Hadoop集群安装
温馨提示:所有博客都是仅供参考,都需要根据各自的环境处理,不要照搬照抄!
准备
- CentOS 7
- hadoop 3.3.0
- jdk 1.8
说明
伪分布式只是相当于在一台机器启动,而集群模式则是多台机器。
关于环境的安装过程,请参考Hadoop安装及单机模式
本示例hadoop安装目录(/usr/local/hadoop/hadoop),java安装目录(/usr/local/java/jdk)
完整步骤
- 安装环境hadoop+jdk
- 配置域名(可忽略)
- 免密登录
- 配置hadoop
- 开放端口
- 启动hadoop
- 验证hadoop
配置域名
IP | 域名 | 说明 |
---|---|---|
192.168.78.101 | hadop.dongle.com | hadoop主服务器 |
192.168.78.102 | hadop2.dongle.com | hadoop子服务器2 |
192.168.78.103 | hadop3.dongle.com | hadoop子服务器3 |
192.168.78.104 | hadop4.dongle.com | hadoop子服务器4 |
为各服务器配置域名 /etc/hosts
192.168.78.101 hadoop.dongle.com
192.168.78.102 hadoop2.dongle.com
192.168.78.103 hadoop3.dongle.com
192.168.78.104 hadoop4.dongle.com
# hadoop.dongle.com主机全配置,其他子服务器仅需配置主服务器域名即可,若不采用域名方式配置,可忽略
设置免密登录
允许主服务器能免密登录其他子服务器
ssh-keygn -t rsa
# 一致空格,生成~/.ssh/id_rsa.pub公钥
# 将公钥存入
cat ~/.ssh/id_rsa.pub >> ~/.ssh/auhorized_keys
# ssh验证
ssh hadoop.dongle.com
# 将hadoop的公钥依次传给所有子服务器的 ~/.ssh/auhorized_keys 或直接将主机的该文件发给子服务器(生产环境不推荐)
scp ~/.ssh/id_rsa.pub root@hadoop2.dongle.com:~/.ssh/master.pub
scp ~/.ssh/id_rsa.pub root@hadoop3.dongle.com:~/.ssh/master.pub
scp ~/.ssh/id_rsa.pub root@hadoop4.dongle.com:~/.ssh/master.pub
# 依次在各子服务器设置免密登录
cat ~/.ssh/master.pub >> ~/.ssh/auhorized_keys
# 在主服务器hadoop.dongle.com上验证
ssh hadoop2.dongle.com
ssh hadoop3.dongle.com
ssh hadoop4.dongle.com
服务器配置
${HADOOP_HOME}/etc/hadoop/hadoop-env.sh 配置以下内容
export JAVA_HOME=/usr/local/java/jdk
export HADOOP_HOME=/usr/local/hadoop/hadoop
# 以下用户名配置启动hadoop的用户
export HDFS_DATANODE_USER=root
export HDFS_NAMENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
${HADOOP_HOME}/etc/hadoop/yarn-env.sh 配置以下内容
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=roo
${HADOOP_HOME}/etc/hadoop/code-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop.dongle.com:9000</value> <!--hdfs url,配置到Hadoop.dongle.com主机上-->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value> <!--临时目录-->
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hdfs/name</value> <!--hdfs namenode 元数据位置,没有需要创建-->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hdfs/data</value> <!--hdfs datanode 数据块位置,没有需要创建-->
</property>
<property>
<name>dfs.replication</name>
<value>2</value> <!--复制数量,默认3个,但不应大于机器数-->
</property>
<property>
<name>dfs.datanode.hostname</name>
<value>hadoop.dongle.com</value>
</property>
</configuration>
${HADOOP_HOME}/etc/hadoop/mapper-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!--mapreduce框架模式-->
</property>
</configuration>
${HADOOP_HOME}/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop.dongle.com</value> <!--配置ResourceManager的地址-->
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!--yarn 服务模式-->
</property>
</configuration>
主机服务配置:方便同时启动所有服务器
${HADOOP_HOME}/etc/hadoop/workers
hadoop.dongle.com
hadoop2.dongle.com
hadoop3.dongle.com
hadoop4.dongle.com
# 注意每行一个需要同时启动的服务器地址
开放主机端口
需要开放主机hadoop.dongle.com的部分端口,或者直接关闭防火墙(不推荐)
# 开放 9000(hdfs文件系统端口,必须)、9870(namenode ui)、8088(yarn ui)、9864(datanode ui)
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --zone=public --add-port=9870/tcp --permanent
firewall-cmd --zone=public --add-port=8088/tcp --permanent
firewall-cmd --zone=public --add-port=9864/tcp --permanent
firewall-cmd --reload
启动
# 启动
${HADOOP_HOME}/sbin/start-all.sh
# 关闭
${HADOOP_HOME}/sbin/stop-all.sh
验证
访问 http://hadoop.dongle.com:9870
访问 http://hadoop.dongle.com:8088