自己从零安装hadoop-HA集群

总体步骤

1、分配机器,各安装什么软件

2、每个节点设置时间一致,设置开机自动校验时间。

3、每个节点修改主机名。

4、每个节点配置hosts。

5、每个节点关闭防火墙。

6、上传JDK,配置JDK

7、创建hadoop用户。

8、给hadoop用户配置root组

-------以下hadoop用户的操作---------

9、开启ssh免密登录。

10、上传Zookeeper到HA8,解压

11、环境变量配置zookeeper

12、配置zoo.cfg文件。

13、创建zoo.cfg中配置的文件夹

14、配置myid文件

15、删除zookeeper安装目录下无用的帮助文档。

16、scp zookeeper的安装目录到8,9,10节点。

17、修改其他节点上的 myid文件

18、scp 环境变量到其他节点。

19、source 各个节点的环境变量。

20、启动。

21、查看状态。

22、停止Zookeeper

23、上传hadoop 压缩包,解压

24、配置hadoop 环境变量

25、配置hadoop-HA参数

26、scp环境变量到1~7节点

27、source 环境变量1~7节点

28、scp hadoop.xxx文件夹到1~7节点

29、启动

*将整个过程编程shell或Python命令

1、分配机器

10台centos

机器名

安装的软件

进程

HA1

JDK,hadoop

namenode,zkfc

HA2

JDK,hadoop

namenode,zkfc

HA3

JDK,hadoop

resourcemanager

HA4

JDK,hadoop

resourcemanager

HA5

JDK,hadoop

datenode,nodemanager

HA6

JDK,hadoop

datenode,nodemanager

HA7

JDK,hadoop

datenode,nodemanager

HA8

JDK,zookeeper,hadoop

JournalNode、QuorumPeerMain,zkfc状态值,yarn的ha状态值

HA9

JDK,zookeeper,hadoop

JournalNode、QuorumPeerMain,zkfc状态值,yarn的ha状态值

HA10

JDK,zookeeper,hadoop

JournalNode、QuorumPeerMain,zkfc状态值,yarn的ha状态值

2、每个节点设置时间一致,设置开机自动校验时间。

chkconfig --list

chkconfig --level 12345 ntpdate on

service ntpdate start

3、每个节点修改主机名。

vi /etc/sysconfig/network

hostname HA123456...10

4、每个节点配置hosts。

vi /etc/hosts

192.168.18.136 HA1

192.168.18.137 HA2

192.168.18.138 HA3

192.168.18.139 HA4

192.168.18.140 HA5

192.168.18.141 HA6

192.168.18.142 HA7

192.168.18.143 HA8

192.168.18.144 HA9

192.168.18.145 HA10

//要编写一个shell脚本,如果集群里有几十台怎么办?

5、每个节点关闭防火墙。

chkconfig iptables off

service iptables stop

6、新建application文件夹,上传JDK,配置JDK

每台机器都需要

1、HA1上传JDK压缩包到根目录

2、解压到根目录

tar -xzvf jdk-8u73-linux-x64.tar.gz

vi /etc/profile

export JAVA_HOME=/jdk1.8.0_73

export PATH=$PATH:$JAVA_HOME/bin

删除一些无用的文件

拷贝到其他机器,在向所有窗口发送中输入:

scp -r HA1:/jdk1.8.0_73/ $HOSTNAME:/

拷贝 /etc/profile 到其他机器

scp HA1:/etc/profile $HOSTNAME:/etc/profile

source /etc/profile

7、 创建hadoop账号

adduser hadoop

passwd hadoop

123456

8、给hadoop用户配置root组

vi /etc/sudoers

## Allow root to run any commands anywhere

root ALL=(ALL) ALL

在这里添加

hadoop ALL=(ALL) ALL

------------以下hadoop用户的操作-----------------

9、开启ssh免密登录。

ssh-keygen -t rsa

touch authorized_keys

修改authorized_keys文件权 限为 600,命令:chmod 600 authorized_keys

如果不修改权限,通不过linux的权限认证,ssh会无效的

这个ssh免密登录是针对hadoop用户。root用户没有配置,不能免密登录对方。ssh免密是用户有效

10、上传Zookeeper到HA8,解压

上传到home文件夹下

解压到home文件夹下

tar -xzvf zookeeper-3.3.6.tar.gz

11、环境变量配置zookeeper

sudo vi /etc/profile

export ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.3.6

export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin

12、配置zoo.cfg文件。

cd conf/

cp zoo_sample.cfg zoo.cfg

vi zoo.cfg

dataDir=/home/hadoop/zookeeper-3.3.6/data

dataLogDir=/application/zookeeper-3.3.6/log

server.1=HA8:2888:3888

server.2=HA9:2888:3888

server.3=HA10:2888:3888

13、创建zoo.cfg中配置的文件夹

[hadoop@HA8 zookeeper-3.3.6]$ mkdir data

[hadoop@HA8 zookeeper-3.3.6]$ mkdir log

14、配置myid文件

cd data

vi myid

1

不能带有空格或空行

15、删除zookeeper安装目录下无用的帮助文档。

rm -rf docs dist-maven/

rm -rf src.zip *.txt javafx-src.zip *.html

rm -rf *.xml *.txt src zookeeper-3.3.6.jar.*

16、scp zookeeper的安装目录到8,9,10节点。

[hadoop@HA8 ~]$ scp -r zookeeper-3.3.6 HA9:/home/hadoop

[hadoop@HA8 ~]$ scp -r zookeeper-3.3.6 HA10:/home/hadoop

17、修改其他节点上的 myid文件

cd data

vi myid 

2  另一台 3

不能带有空格或空行

18、scp 环境变量到其他节点。

sudo scp /etc/profile HA9:/etc/profile

sudo scp /etc/profile HA10:/etc/profile

19、source 各个节点的环境变量。

source /etc/profile

20、启动。

 8,9,10三台机器都要运行

zkServer.sh start

21、查看状态。

8,9,10三台都要运行

jsp

zkServer.sh status

22、停止Zookeeper

Zookeeper安装启动成功后,先stop。

8,9,10三台都要运行

zkServer.sh stop

23、上传hadoop 压缩包,解压

[hadoop@HA1 hadoop-2.7.3]$ tar -xzvf hadoop-2.7.3.tar.gz

24、配置hadoop 环境变量

sodu vi /etc/profile

export HADOOP_HOME=/home/hadoop/hadoop-2.7.3

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

除了配置HA1,还要配置 HA8,9,10

25、配置hadoop-HA参数

25.1修改hadoop-env.sh

vi hadoop-env.sh

#export JAVA_HOME=${JAVA_HOME}

export JAVA_HOME=/jdk1.8.0_73

25.2修改core-site.xml

<configuration>

<!-- 指定hdfs的nameservice为nbdo -->

<property>

<name>fs.defaultFS</name>

<value>hdfs://nbdo/</value>

</property>

<!-- 指定hadoop临时目录 -->

<property>

<name>hadoop.tmp.dir</name>

<value>/home/hadoop/app/hdpdata/</value>

</property>

<!-- 指定zookeeper地址 -->

<property>

<name>ha.zookeeper.quorum</name>

<value>HA8:2181,HA9:2181,HA10:2181</value>

</property>

</configuration>

25.3修改hdfs-site.xml

<configuration>

<!--指定hdfs的nameservice为nbdo,需要和core-site.xml中的保持一致 -->

<property>

<name>dfs.nameservices</name>

<value>nbdo</value>

</property>

<!-- nbdo下面有两个NameNode,分别是nn1,nn2 -->

<property>

<name>dfs.ha.namenodes.nbdo</name>

<value>nn1,nn2</value>

</property>

<!-- nn1的RPC通信地址 -->

<property>

<name>dfs.namenode.rpc-address.nbdo.nn1</name>

<value>HA1:9000</value>

</property>

<!-- nn1的http通信地址 -->

<property>

<name>dfs.namenode.http-address.nbdo.nn1</name>

<value>HA1:50070</value>

</property>

<!-- nn2的RPC通信地址 -->

<property>

<name>dfs.namenode.rpc-address.nbdo.nn2</name>

<value>HA2:9000</value>

</property>

<!-- nn2的http通信地址 -->

<property>

<name>dfs.namenode.http-address.nbdo.nn2</name>

<value>HA2:50070</value>

</property>

<!-- 指定NameNode的edits元数据在JournalNode上的存放位置 -->

<property>

<name>dfs.namenode.shared.edits.dir</name>

<value>qjournal://HA8:8485;HA9:8485;HA10:8485/nbdo</value>

</property>

<!-- 指定JournalNode在本地磁盘存放数据的位置 -->

<property>

<name>dfs.journalnode.edits.dir</name>

<value>/home/hadoop/journaldata</value>

</property>

<!-- 开启NameNode失败自动切换 -->

<property>

<name>dfs.ha.automatic-failover.enabled</name>

<value>true</value>

</property>

<!-- 配置失败自动切换实现方式 -->

<property>

<name>dfs.client.failover.proxy.provider.nbdo</name>

<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>

<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行,防止脑裂问题-->

<property>

<name>dfs.ha.fencing.methods</name>

<value>

sshfence

shell(/bin/true)

</value>

</property>

<!-- 使用sshfence隔离机制时需要ssh免登陆 -->

<property>

<name>dfs.ha.fencing.ssh.private-key-files</name>

<value>/home/hadoop/.ssh/id_rsa</value>

</property>

<!-- 配置sshfence隔离机制超时时间 -->

<property>

<name>dfs.ha.fencing.ssh.connect-timeout</name>

<value>30000</value>

</property>

</configuration>

25.4修改mapred-site.xml

[hadoop@HA1 hadoop]$ cp mapred-site.xml.template mapred-site.xml

[hadoop@HA1 hadoop]$ vi mapred-site.xml

<configuration>

<!-- 指定mr框架为yarn方式 -->

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

25.5修改yarn-site.xml

<configuration>

<!-- 开启RM高可用 -->

<property>

<name>yarn.resourcemanager.ha.enabled</name>

<value>true</value>

</property>

<!-- 指定RM的cluster id -->

<property>

<name>yarn.resourcemanager.cluster-id</name>

<value>yrc</value>

</property>

<!-- 指定RM的名字 -->

<property>

<name>yarn.resourcemanager.ha.rm-ids</name>

<value>rm1,rm2</value>

</property>

<!-- 分别指定RM的地址 -->

<property>

<name>yarn.resourcemanager.hostname.rm1</name>

<value>HA3</value>

</property>

<property>

<name>yarn.resourcemanager.hostname.rm2</name>

<value>HA4</value>

</property>

<!-- 指定zk集群地址 -->

<property>

<name>yarn.resourcemanager.zk-address</name>

<value>HA8:2181,HA9:2181,HA10:2181</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>

25.5修改slaves

(slaves是指定子节点的位置,因为要在HA1和HA2上启动HDFS、在HA3和HA4启动yarn,所以HA1和HA2上的slaves文件指定的是datanode的位置,HA3和HA4上的slaves文件指定的是nodemanager的位置)

HA5

HA6

HA7

26、scp环境变量到1~7节点

sudo scp HA1:/etc/profile $HOSTNAME:/etc/profile

27、source 环境变量1~7节点

source /etc/profile

28、scp hadoop.xxx文件夹其他9台机器

删除share文件下的doc文件夹

rm -rf doc

scp -r HA1:/home/hadoop/hadoop-2.7.3 $HOSTNAME:/home/hadoop/

29、启动

顺序严格按照

29.1启动Zookeeper

HA8,9,10

zkServer.sh start

29.2启动journalnode

HA8,9,10

hadoop-daemon.sh start journalnode

29.3格式化HDFS

#在HA1上执行命令:

hdfs namenode -format

#格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/home/hadoop/app/hdpdata/,然后将/home/hadoop/app/hdpdata/拷贝到HA2的/home/hadoop/app/hdpdata/。

scp -r

##也可以这样,建议HA2上运行:hdfs namenode -bootstrapStandby

29.4格式化ZKFC(在HA1上执行一次即可)

hdfs zkfc -formatZK

29.5启动HDFS(在HA1上执行)

sbin/start-dfs.sh

29.6启动YARN

(#####注意#####:是在HA3上执行start-yarn.sh,把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动)

HA3上:sbin/start-yarn.sh

HA4上:yarn-daemon.sh start resourcemanager

yarn-ha,还需要手动启动(HA4上:yarn-daemon.sh start resourcemanager)第二个resourcemanager,

因为start-yarn.sh不具备启动第二个resourcemanager的功能

[hadoop@HA1 .ssh]$ jps

2949 DFSZKFailoverController

3064 Jps

2622 NameNode

[hadoop@HA1 .ssh]$

[hadoop@HA2 .ssh]$ jps

2040 NameNode

2154 DFSZKFailoverController

2287 Jps

[hadoop@HA3 ~]$ jps

2593 ResourceManager

2859 Jps

[hadoop@HA4 ~]$ jps

2320 ResourceManager

2376 Jps

[hadoop@HA4 ~]$

[hadoop@HA5 ~]$ jps

2331 Jps

2220 NodeManager

2015 DataNode

[hadoop@HA5 ~]$

[hadoop@HA6 ~]$ jps

2317 Jps

2206 NodeManager

2015 DataNode

[hadoop@HA6 ~]$

[hadoop@HA7 ~]$ jps

2419 NodeManager

2551 Jps

2008 DataNode

[hadoop@HA7 ~]$

[hadoop@HA8 ~]$ jps

2187 Jps

1979 QuorumPeerMain

2031 JournalNode

[hadoop@HA8 ~]$

[hadoop@HA9 ~]$ jps

2001 JournalNode

2157 Jps

1951 QuorumPeerMain

[hadoop@HA9 ~]$

[hadoop@HA10 ~]$ jps

2178 Jps

2019 JournalNode

1961 QuorumPeerMain

[hadoop@HA10 ~]$

http://192.168.18.136:50070/(HDFS管理界面)

http://192.168.18.138:8088/ (MR管理界面)

发布了461 篇原创文章 · 获赞 193 · 访问量 184万+

猜你喜欢

转载自blog.csdn.net/zengmingen/article/details/104583727