Hadoop高可用安装

各台虚拟机的安装要求如图所示,其中node03 04 05 06分别对应第1 2 3 4台服务器

1.配置NameNode

1.1 分发jdk到第2 3 4台服务器上

在第一台服务器上输入命令:
-scp jdk-7u67-linux-x64.rpm node02:pwd
-scp jdk-7u67-linux-x64.rpm node03:pwd
-scp jdk-7u67-linux-x64.rpm node04:pwd
表示将jdk发送到第2 3 4服务器的当前目录下,发送完毕后cd进入到相应目录下用ll命令查看jdk是否存在,如图所示

1.2 给node04、05、06分别安装jdk

分别在第2 3 4服务器上执行以下安装命令:
-rpm -i jdk-7u67-linux-x64.rpm
在第一台上cd /etc,在此目录下把profile文件分发到
node04、05、06上,输入以下命令:
scp profile node04:pwd

1.3 同步所有服务器的时间

使用date命令查看机子当前的时间,时间不能差太大,否则集群启动后某些进程跑不起来。
如果时间相差较大,即不同步,则可用下列方法解决:
1.yum进行时间同步器的安装
-yum -y install ntp
2.执行同步命令
-ntpdate time1.aliyun.com 和阿里云服务器时间同步

1.4 装机之前的配置文件检查

1.-cat /etc/sysconfig/network
查看HOSTNAME是否正确
2.-cat /etc/hosts
查看IP映射是否正确
若不正确,可以改文件,也可以把node03上的用scp分发过去。
3. -cat /etc/sysconfig/selinux里是否
SELINUX=disabled
P.S:注意是SELINUX的状态而不是SELINUXTYPE,如果弄错对象会导致开机出现kernel panic错误而无法开机,解决方法https://blog.csdn.net/maketubu7/article/details/80005350,依照里面的内容可以进入登录界面,而后将selinux状态改回来即可解决错误。

1.5 NN与其他三台机子的免秘钥设置

在初始目录下用l -a命令查看是否有.ssh目录,如果没有,就用ssh localhost登录再exit退出,再次查看即可。
而后用cd .ssh进入并用ll命令查看,再用scp id_dsa.pub node0X:pwd/node03.pub把node03的公钥发送到其他三台服务器上,其中node0X代表要发送的其他三台服务器上。
发送完毕后进入到其他三台服务器的.ssh目录下查看第一台服务器的公钥是否存在。

如果存在,就用cat node0X.pub >> authorized_keys命令把第一台服务器的公钥追加到其他三台机子的authorized_keys上。
追加完毕后ssh登录一下第一台机子,看是否能免密钥登录。
而后在第一台服务器上用ssh命令登录其他三台机子,如果能免密钥登录则说明设置成功。

1.6 两个NameNode之间互免密钥

现在我们已经可以在1号机上免密钥登录2 3 4号机,接下来需要设置2 3 4号机免密钥登录1号机,以2号机为例:
在2号机上:
ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
用ssh localhost命令验证一下
分发到1号机上:scp id_dsa.pub node01:pwd/node02.pub
在1号机的.ssh目录下,cat node02.pub >> authorized_keys,
在node02上ssh node01验证一下可否免密钥登录

1.7 修改NameNode的一些配置

共需要修改三个配置文件,分别为hdfs-site.xml core-site.xml slaves,在修改之前,需进入它们所在的目录,即cd /opt/yyx(自己的姓名首字母,为安装时自己命名)/hadoop-2.6.5/etc/hadoop

一.配置hdfs-site.xml,使用vi hdfs-site.xml命令,而后按I开始配置
1.去掉snn的配置

dfs.namenode.secondary.http-address
node01:50090

2.增加以下property

dfs.nameservices mycluster dfs.replication 3 dfs.ha.namenodes. mycluster nn1,nn2 dfs.namenode.rpc-address. mycluster.nn1 node01:9000 dfs.namenode.http-address. mycluster.nn1 node01:50070 dfs.namenode.rpc-address. mycluster.nn2 node02:9000 dfs.namenode.http-address. mycluster.nn2 node02:50070 dfs.namenode.shared.edits.dir qjournal://node01:8485;node04:8485;node05:8485/mycluster dfs.journalnode.edits.dir /var/yyx/hadoop/ha/jn dfs.ha.automatic-failover.enabled.cluster true dfs.client.failover.proxy.provider.cluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider< /value> dfs.ha.fencing.methods sshfence dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa

二.配置core-site.xml,使用vi core-site.xml命令,而后按I开始配置
<!– 集群名称mycluster–>

fs.defaultFS
hdfs://mycluster

<!– zookeeper布署的位置–>

ha.zookeeper.quorum
node07:2181,node08:2181,node09:2181

三.配置slaves,使用vi slaves命令进行配置
node04
node05
node06

四.安装hadoop
cd /opt 进入目录,将其下的yyx(自己命名的文件目录)目录分发到node02、03、04
scp –r yyx/ node02:pwd
scp –r yyx/ node03:pwd
scp –r yyx/ node04:pwd

五.将hdfs-site.xml和core-site.xml分发到node02、03、04
-scp hdfs-site.xml core-site.xml node02:pwd
-scp hdfs-site.xml core-site.xml node03:pwd
-scp hdfs-site.xml core-site.xml node04:pwd

1.8 安装zookeeper

1.解压安装zookeeper
tar xf zookeeper-3.4.6.tar.gz -C /opt/yyx
即在opt/yyx目录下解压zookeeper
2.修改zookeeper的配置文件
cd /opt/yyx/zookeeper-3.4.6/conf
给zoo_sample.cfg改名
cp zoo_sample.cfg zoo.cfg

用vi zoo.cfg进行配置
改dataDir=/var/yyx/zk
并在末尾追加
server.1=node04:2888:3888
server.2=node05:2888:3888
server.3=node06:2888:3888
其中2888主从通信端口,3888是当主挂断后进行选举机制的端口

3.把zookeeper分发到其他节点
scp -r zookeeper-3.4.6/ node03:pwd
scp -r zookeeper-3.4.6/ node04:pwd
并用ll /opt/yyx检查下看分发成功没

4.给每台机子创建刚配置文件里的路径
mkdir -p /var/yyx/zk
对node02来说:
echo 1 > /var/yyx/zk/myid //即将node02命名为1
cat /var/yyx/zk/myid给每台机子配置其编号(必须对node03来说:是阿拉伯数字)
echo 2 > /var/yyx/zk/myid //即将node02命名为2
cat /var/yyx/zk/myid
对node04来说:
echo 3 > /var/yyx/zk/myid //即将node02命名为3
cat /var/yyx/zk/myid

5.在/etc/profile里面配置
export ZOOKEEPER_HOME=/opt/yyx/zookeeper-3.4.6
export PATH= P A T H : / u s r / j a v a / j d k 1.7. 0 6 7 / b i n : PATH:/usr/java/jdk1.7.0_67/bin: PATH:/usr/java/jdk1.7.067/bin:HADOOP_HOME/bin: H A D O O P H O M E / s b i n : HADOOP_HOME/sbin: HADOOPHOME/sbin:ZOOKEEPER_HOME/bin

6.然后在把/etc/profile分发到其他node05、node06
scp /etc/profile node03:/etc
scp /etc/profile node04:/etc
在node02、03、04里source /etc/profie,这步千万别忘
验证source这句是否完成,输入zkCli.s,按Tab可以把名字补全zkCli.sh

7.启动zookeeper
全部会话:zkServer.sh start
接着用zkServer.sh status查看每个zookeeper节点的状态
注意:如果启动不起来,请把/etc/profile里的JAVA_HOME改成绝对路径。

1.9 启动journalnode

在02、03、04三台机子上输入以下命令把journalnode启动起来
hadoop-daemon.sh start journalnode
使用jps命令,如果出现了journalnode就说明已经启动。

任选一台namenode上执行hdfs namenode –format命令,另一台namenode不用执行,否则会找不到集群。

而后用hadoop-daemon.sh start namenode命令启动之前格式化的namenode,并用hdfs namenode -bootstrapStandby命令为另一台namenode同步数据。

1.10 格式化zkfc

用hdfs zkfc -formatZK命令格式化zkfc,而后在node02上执行zkCli.sh命令打开zookeeper客户端看hadoop-ha是否打开。

1.11 启动hdfs集群

在node01上启动hdfs集群:
用start-dfs.sh命令
注意:如果那个节点没起来到hadoop目录下去看那个
node的日志文件log

输入完后用jps命令查看进程。
而后用浏览器访问node01:50070和node02:50070

访问完毕后关闭集群:stop-dfs.sh,关闭zookeeper:zkServer.sh stop

1.12 为MapReduce做准备

为mapred-site.xml.template备份并改名,用以下命令:
cp mapred-site.xml.template mapred-site.xml
而后配置几个文件,
1.在mapred-site.xml里添加如下property

mapreduce.framework.name
yarn

2.在yarn-site.xml里添加如下property

yarn.nodemanager.aux-services
mapreduce_shuffle


yarn.resourcemanager.ha.enabled
true


yarn.resourcemanager.cluster-id
cluster1


yarn.resourcemanager.ha.rm-ids
rm1,rm2


yarn.resourcemanager.hostname.rm1
node03


yarn.resourcemanager.hostname.rm2
node04


yarn.resourcemanager.zk-address
node02:2181,node03:2181,node04:2181

3.把mapred-site.xml和yarn-site.xml 分发到node02、03、04
scp mapred-site.xml yarn-site.xml node02:pwd
scp mapred-site.xml yarn-site.xml node03:pwd
scp mapred-site.xml yarn-site.xml node04:pwd

由于node05和node06都是resourcemanager,因此需为它们相互免密钥
node03上免密钥登录node04:
在node03的.ssh目录下生成密钥
ssh-keygen -t dsa -P ‘’ -f ./id_dsa
并追加到自己authorized_keys
cat id_dsa.pub >> authorized_keys
用ssh localhost验证看是否需要密码,别忘了exit
将node03 的公钥分发到node04
scp id_dsa.pub node04:pwd/node03.pub
在node04的.ssh目录下,追加node03.pub
cat node03.pub >> authorized_keys
在node03上ssh node04,看是否免密钥

node04上免密钥登录node03可同理操作。

操作完后,执行以下操作:
1.启动zookeeper,全部会话zkServer.sh start
2.在node01上启动hdfs,start-dfs.sh
3.在node01上启动yarn,start-yarn.sh
4.在node03、04上分别启动resourcemanager,
yarn-daemon.sh start resourcemanager
5.全部会话jps,看进程全不全

在浏览器访问node03:8088,查看resourcemanager管理的内容

1.13 尝试运行wordcount

这里以500mils的歌词为例:
1.cd /opt/yyx/hadoop-2.6.5/share/hadoop/mapreduce
2.在hdfs里建立输入目录和输出目录
hdfs dfs -mkdir -p /data/in
hdfs dfs -mkdir -p /data/out
3.将要统计数据的文件上传到输入目录并查看
hdfs dfs -put ~/500miles.txt /data/input
hdfs dfs -ls /data/input
4. 运行wordcount(注意:此时的/data/out必须是空目录
hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /data/in /data/out/result
5.查看运行结果
hdfs dfs -ls /data/out/result
hdfs dfs -cat /data/out/result/part-r-00000

运行完后关闭集群:
node01: stop-dfs.sh
node01: stop-yarn.sh (停止nodemanager)
node03,node06: yarn-daemon.sh stop resourcemanager
Node02、03、04:zkServer.sh stop

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值