AI智能
改变未来

hadoo高可用的安装


在伪分布式的基础上安装hadoop

hadoop的介绍

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

hadoop安装方案


步骤:

1.分发jdk到node03,node04,node05

在Xshell的全部会话栏里,输入

ll

,查看jkd是否发送成功

2.给node03,node04,node05分别安装jdk

①在node03,node04,node05上执行rpm安装命令:

rpm -i jkd-7u67-linux-x64.rpm

②在node02上cd /etc,在此目录下把profile文件分发到node03,node04,node05上:

scp profile node03:\'pwd\'

scp profile node04:\'pwd\'

scp profile node05:\'pwd\'

在Xshell的全部会话栏里,输入:

source /etc/profile

,然后输入:

jps

,查看node03,node04,node05这三台机子的jdk是否安装好:

3.同步所有服务器的时间

①利用

date

命令查看机子的当前时间
时间不能差太大,否则集群启动后某些进程跑不起来。
②若时间不同步
1)yum进行时间同步器的安装

yum -y install ntp

2)执行同步命令

ntpdate time1.aliyun.com

和阿里云服务器时间同步

4.装机之前的配置文件检查

①查看hostname是否正确

cat /etc/sysconfig/network

②查看IP映射是否正确

cat /etc/hosts

③查看selinux里是否为disabled

cat /etc/sysconfig/selinux

④查看防火墙是否关闭

service iptables status

5. namenode与其他三台机子的免密钥设置

①在家目录下

ll -a

看下有无.ssh 文件,如果没有就ssh localhost一下

ssh-keygen -t dsa -P \'\'-f ~/.ssh/id_dsa

cat ~/.ssh/id dsa.pub >> ~/.ssh/authorized_keys

②cd .ssh,并 ll 查看
③把node02的公钥发给其他三台机子

scp id_dsa.pub node03:\'pwd\'/node02.pub

scp id_dsa.pub node04:\'pwd\'/node02.pub

scp id_dsa.pub node05:\'pwd\'/node02.pub

④在node03,node04,node05追加一下node02.pub

cat node02,pub >> authorized_keys

6.两个namenode之间相互免密钥

在node03上:

ssh-keygen -t dsa -P \'\'-f ~/.ssh/id_dsa

cat ~/.ssh/id dsa.pub >> ~/.ssh/authorized_keys

然后ssh localhost验证一下
然后将id_dsa分发到node02:

scp id_dsa.pub node02:\'pwd\'/node03.pub

在node02的 .ssh 文件下:

cat node03.pub >> authorized_keys

在node03上ssh node02 验证一下是否可免密钥登录

7.修改namenode的一些配置信息

1)vi hdfs-site.xml

①去掉snn的配置

②增加以下property







综上之后,hdfs-site.xml的内容为:

<configuration><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.nameservices</name><value>mycluster</value></property><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>node02:8020</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>node03:8020</value></property><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>node02:50070</value></property><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>node03:50070</value></property><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://node02:8485;node03:8485;node04:8485/mycluster</value></property><property><name>dfs.journalnode.edits.dir</name><value>/var/yh/hadoop/ha/jn</value></property><property><name>dfs.client.failover.proxy.provider.mycluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_dsa</value></property><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property></configuration>
2)vi core-site.xml


core-site.xml的内容:

<configuration><property><name>fs.defaultFS</name><value>hdfs://mycluster</value></property><property><name>ha.zookeeper.quorum</name><value>node03:2181,node04:2181,node05:2181</value></property></configuration>
3)vi slaves
node03node04node05

4)安装hadoop

①cd /opt,将解压后的hadoop(寻找到haodoop所在的目录)分发到node03,node04,node05:

scp -r yh/ node03:\'pwd\'

scp -r yh/ node04:\'pwd\'

scp -r yh/ node05:\'pwd\'

②将hdfs-site.xml和core-site.xml分发到node03,node04,node05:

scp hdfs-site.xml core-site.xml node03:\'pwd\'

scp hdfs-site.xml core-site.xml node04:\'pwd\'

scp hdfs-site.xml core-site.xml node05:\'pwd\'

8.安装zookeeper(在node03,node04,node05)

1)将zookeeper的压缩包上传之后解压安装zookeeper:

tar xf zookeeper-3.4.6.tar.gz -C /opt/yh

2)修改zookeeper的配置文件

cd /opt/yh/zookeeper-3.4.6/conf

给zoo_sample.cfg改名:

cp zoo_sample.cfg zoo.cfg

然后

vi zoo.cfg

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

3)把zookeeper分发到其他机子

scp -r zookeeper-3.4.6/ node04:\'pwd\'

scp -r zookeeper-3.4.6/ node05:\'pwd\'

利用

ll /opt/yh

检查一下分发成功没有

4)给每台机子创建刚配置文件的路径
mkdir -p /var/yh/zk

对node03来说: .
echo 1 > /var/yh/zk/myid
cat /var/yh/zk/myid

对node04来说:
echo 2 > /var/yh/zk/myid
cat /var/yh/zk/myid

对node05来说:
echo 3 > /var/yh/zk/myid
cat /var/yh/zk/myid

给每台机子配置其编号(必须是阿拉伯数字)

5)在/etc/profile里面配置

export ZOOKEEPER HOME=/opt/yh/zookeeper-3.4.6

export PATH=$PATH:/usr/java/jdk1.7.0_67/bin:$HADOOP_HOME/bin:$HADOOP_ HOME/sbin:$ZOOKEEPER_HOME/bin

6)然后把/etc/profile分发到node04,node05上

scp /etc/profile node04:/etc

scp /etc/profile node05:/etc

在node03,node04,node05里source /etc/ profie
验证source这句是否完成,输入zkCli.s,按Tab可以把名字补全zkCli.sh

7)启动zookeeper

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

8) 启动之后

会有2个follower以及1个leader

9.启动journalnode

在node02,node03,node04上分别把journalnode启动起来:

hadoop-daemon.sh start journalnode

10.格式化任一namenode

1)格式化任一一个namenode

随意挑一台namenode上执行hdfs_namenode -format另一台namenode不用执行,否则clusterlD变 了,找不到集群了。

2)启动格式化后的namenode

hadoop-daemon.sh start namenode

3)同步另一台namenode的数据

hdfs namenode -bootstrapStandby

11.格式化zkfc

hdfs zkfc -formatZK


在node03上执行zkCli. sh打开zookeeper客户端看hadoop-ha是否打开:

12.启动hdfs集群

start-dfs.sh


然后全部会话 jps 进程:
node02:

node03:

node04:

node05:

用浏览器访问集群:

13.关闭集群

关闭集群命令:

stop-dfs.sh


关闭zookeeper命令:

zkServer.sh stop

14.为MapReduce做准备

1)把mapred-site.xml.template留个备份

cp mapred-site.xml.template mapred-site.xml

2)在mapred-site.xml里添加如下property
<property>< name> mapreduce.framework.name </name><value>yarn</value></property>

mapred-site.xml的显示如下:

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


yarn-site.xml显示如下:

<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><property><name>yarn.resourcemanager.cluster-id</name><value>cluster1</value></property><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><property><name>yarn.resourcemanager.hostname.rm1</name><value>node04</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>node05</value></property><property><name>yarn.resourcemanager.zk-address</name><value>node03:2181,node04:2181,node05:2181</value></property></configuration>
4)把mapred-site.xml 和 yarn-site.xml分发到node03,node04,node05

scp mapred-site.xml yarn-site.xml node03: \'pwd\'

scp mapred-site.xml yarn-site.xml node04: \'pwd\'

scp mapred-site.xml yarn-site.xml node05: \'pwd\'

5)在node04和node05上免密钥

在node04的.ssh目录下生成密钥

ssh-keygen -t dsa -P \" -f ./id_dsa

并追加到自己authorized_keys,

cat id_ dsa.pub >> authorized_keys

将node04的公钥分发到node05

scp. id_ dsa.pub node05: \'pwd\'/node04.pub

在node05的ssh目录下,追加node04.pub

cat node04.pub > > authorized_keys

在node04上ssh node05,看是否免密钥.

在node05的.ssh目录下生成密钥

ssh-keygen -t dsa -P \" -f ./id_dsa

并追加到自己authorized_keys,

cat id_ dsa.pub >> authorized_keys

将node05的公钥分发到node04

scp id _dsa.pub node04: \'pwd\'/node05.pub

在node04的.ssh目录下,追加node05.pub

cat node05.pub >> authorized_keys

在node05.上ssh node04,看是否免密钥

6)启动各项

①启动zookeeper,全部会话

zkServer.sh start

②在node02上启动hdfs

start-dfs.sh

③在node02.上启动yarn

start-yarn.sh

④4.在node04、05上分别启动resourcemanager

yarn-daemon.sh start resourcemanager

⑤全部会话jps,看进程全不全
node02:

node03的jps:

node04的jps:

node05的jps:

网页访问node05:8088,查看resourcemanager管理的内容:

7)关闭各项

①关闭zookeeper,全部会话

zkServer.sh stop

②在node02上关闭hdfs

stop-dfs.sh

③在node02.上关闭yarn

stop-yarn.sh

④4.在node04、05上分别关闭resourcemanager

yarn-daemon.sh stop resourcemanager

15.总结

到此Hadoop的高可用就装好了,在安装过程中出现了大大小小的问题,如下:
少了DataNode,出现这种问题的原因有很多,如下:
1、nameNode进行format多次,导致nameNode和dataNode的版本不一致;
2、dataNode没有启动成功,可以查看hadoop目录下logs日志,查看启动错误原因;

在更新完这些.xml的文件后记得
source /etc/profile
另外,在碰到无提示的问题时,可以cd到logs目录下
( 我的cd到logs文件目录的命令是

cd /opt/yh/hadoop-2.6.5/logs

)
然后

ll

查看一下有没有你需要的“.logs” 文件 然后

tail -100 ********.logs

到\”.logs\”文件下查看是什么错误
(例如tail到node02的journalnode的文件下命令是:

tail -100 hadoop-root-journalnode-node02.log

)
还有许多自己解决不了的问题,要么问老师,要么问同学,或者是百度解决,过程很艰辛,收获很丰盛。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » hadoo高可用的安装