hadoop HA集群安装:hadoop(2)-HA集群原理及搭建
1.安装
环境
- 4台机器:hostname分别为:
hadoop1
hadoop2
hadoop3
hadoop4
依赖环境
1.hosts配置、ssh免密环境 、java环境(请参考其他教程,以下仅为简要说明)
# (1) 以hadoop1机器hosts改动为例
vim /etc/hosts
10.179.25.59 hadoop1 hadoop1
10.179.17.22 hadoop2 hadoop2
10.179.32.14 hadoop3 hadoop3
10.179.48.227 hadoop4 hadoop4
# 分发到其他机器
sudo scp /etc/hosts hadoop2:/etc/
sudo scp /etc/hosts hadoop3:/etc/
sudo scp /etc/hosts hadoop4:/etc/
# (2)ssh免密
ssh-keygen -t rsa
cd .ssh
cp id_rsa.pub authorized_keys
#(注意:ssh免密登录可能会失败,要注意.ssh整个文件夹给700权限)
sudo chmod 700 ~/.ssh
sudo chmod 700 /home/当前用户
sudo chmod 600 ~/.ssh/authorized_keys
# 最简单的方法将整个.ssh目录复制给其他机器
scp -r .ssh hadoop2:~/
scp -r .ssh hadoop3:~/
scp -r .ssh hadoop4:~/
# (3) java安装 设置软链
# 卸载openjdk,安装jdk1.8
ln -snf bigdata/jdk1.8.0_77 java-current
# 其他机器同理
确保能成功ssh到其他机器,java环境正常即可。
hadoop环境
准备hadoop包。如:
http://mirror.bit.edu.cn/apache/
wget http://mirror.bit.edu.cn/apache/hadoop/core/hadoop-2.7.6/hadoop-2.7.6.tar.gz
hadoop-current -> hadoop-2.7.6
java-current -> jdk1.8.0_77
分发:
复制于其他机器:
scp -r ~/{hadoop*,jdk*} hadoop2:~/
scp -r ~/{hadoop*,jdk*} hadoop3:~/
scp -r ~/{hadoop*,jdk*} hadoop4:~/
每个机器上设置软链:
ln -s jdk1.8.0_77 java-current
ln -s hadoop-2.7.6 hadoop-current
说明:
这里说下题外话,可直接忽略。上述分发的过程可以用其他方式,如结合pssh、pscp命令等,也可以将文件和软链一个打包再分发。
使用tar打包,tar打包默认会打包软链接(zip不会默认不会打包软链接)
tar -zvcf all-hadoop.tar.gz bigdata/jdk1.8.0_77 bigdata/hadoop-2.7.6 hadoop-current java-current
scp all-hadoop.tar.gz hadoop2:~/
scp all-hadoop.tar.gz hadoop3:~/
scp all-hadoop.tar.gz hadoop4:~/
载解压即可:
tar -zxvf all-hadoop.tar.gz
给hadoop用户添加sudo权限(或者免密的sudo权限)
sudo vim /etc/sudoers
# 修改内容如下:
root ALL = (ALL)ALL
hadoop ALL = (ALL)ALL
强制保存退出即可。
设置环境变量(可选)
sudo vim /etc/profile
export JAVA_HOME=/home/hadoop/java-current
export HADOOP_HOME=/home/hadoop/hadoop-current
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
分发
sudo scp /etc/profile hadoop2:/etc/
sudo scp /etc/profile hadoop3:/etc/
sudo scp /etc/profile hadoop4:/etc/
ssh hadoop2 "source /etc/profile"
ssh hadoop3 "source /etc/profile"
ssh hadoop4 "source /etc/profile"
#已生效,但需要重开终端
测试java、hadoop,直接使用命令能识别即可。
2. 配置hadoop
(1)hadoop-env.sh
vim ~/hadoop-current/etc/hadoop/hadoop-env.sh
# export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/home/hadoop/java-current
(2)core-site.xml
vim ~/hadoop-current/etc/hadoop/core-site.xml
<configuration
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
</configuration>
分析:hadoop1是你主节点所在主机的ip,而9000为端口
(3)hdfs-site.xml
vim ~/hadoop-current/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/hadoop/data/dfs/nn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoop/data/dfs/dn</value>
</property>
</configuration>
说明:鉴于测试环境可能会更换hadoop版本,namenode目录最好放在固定的位置,如file:///home/hadoop/data/dfs/nn
, datanode放置file:///home/hadoop/data/dfs/dn
(4)mapred-site.xml
在hadoop的相关目录中没有此文件,但是有一个mapred-site.xml.template文件,将该文件复制一份为mapred-site.xml
vim ~/hadoop-current/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(5)yarn-site.xml
<configuration>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<!-- 指定reducer获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>file:///home/hadoop/data/yarn/nm</value>
</property>
</configuration>
说明:鉴于测试环境可能会更换hadoop版本,namemaneger目录最好放在固定的位置,如file:///home/hadoop/data/yarn/nm
(6)slaves文件
vim slaves
hadoop2
hadoop3
hadoop4
说明:
若启动历史服务器和日志聚合,需要在mapred-site.xml和yarn-stie.xml中添加额外配置。参见历史服务
此步骤的所有操作仍然是在hadoop1节点上操作,复制至其他机器即可。
复制hadoop文件至hadoop2,3,4:
scp -r /home/hadoop/hadoop-current/etc/hadoop/* hadoop2:/home/hadoop/hadoop-current/etc/hadoop/
scp -r /home/hadoop/hadoop-current/etc/hadoop/* hadoop3:/home/hadoop/hadoop-current/etc/hadoop/
scp -r /home/hadoop/hadoop-current/etc/hadoop/* hadoop4:/home/hadoop/hadoop-current/etc/hadoop/
3.启动HDFS和YARN
1.格式化namenode
hadoop namenode -format
2.启动
start-all.sh 命令其实是Instead use start-dfs.sh and start-yarn.sh
start-dfs.sh 会启动 NameNode和SecondNameNode–>slave是DataNode
start-yarn.sh 会启动ResourceManage–>slave是NodeManage
说明:
关于服务的启动有多种方式,可以单独启动
以下hadoop1的进程:
7815 Jps
7028 NameNode
7458 ResourceManager
hadoop2、3、4:
3087 NodeManager
2919 DataNode
3426 Jps
4.验证
HDFS
hadoop1:50070
YARN
hadoop1:8088
5.hadoop停止
类似启动,在master下使用 stop-all.sh即可。
stop-all.sh
完成!