Hadoop集群部署

Hadoop集群部署

一、环境配置信息

组件 版本
OS CentOS 7.2 64bit
Hadoop hadoop-2.6.0-cdh5.15.1
ZooKeeper 3.4.6
JRE 1.8.0_45

软件存放在https://pan.baidu.com/s/1kbVB00sHAcVyH1kzjl735g中


二、主机规划

在云提供商购买三台云主机,配置为2核8G内存。

IP Host 安装软件 进程
114.67.97.1* ruozedata001 Hadoop、zookeeper NameNode
DFSZKFailoverController
JournalNode
DataNode
ResourceManager
JobHistoryServer
NodeManager

QuorumPeerMain
114.67.97.2* ruozedata002 Hadoop、zookeeper NameNode
DFSZKFailoverController
JournalNode
DataNode
ResourceManager
NodeManager

QuorumPeerMain
114.67.98.1** ruozedata003 Hadoop、zookeeper JournalNode
DataNode

NodeManager

PS:符号*表示隐藏真实数字,根据自己的实际情况进行部署。

        当前系统配置 NameNode,ResourceManager 进程的 HA


三、环境准备

使用XShell或者SecurityCRT连接云主机进行后续操作。

1、目录规划

在三台云主机上新建名为hadoop的用户,无密码

[root@ruozedata001 ~]# useradd hadoop

切换至hadoop用户,在其家目录(/home/hadoop)下新建如下列表中的新目录

[root@ruozedata001 hadoop]# su - hadoop

[hadoop@ruozedata001 ~]$ mkdir app data lib maven_repos software script source tmp

目录名 说明
app 最终软件安装的目录
data 存放测试数据
lib 存放我们自己开发的jar
maven_repos Maven本地仓库
software 存放各种软件
script 存放脚本
source 存放源代码
tmp 临时文件夹

注:以下操作均使用hadoop用户操作,如需root用户操作会特别指明。

2、上传组件

将存在个人电脑中的Hadoop、ZK和JDK使用rz命令(如未安装,使用root用户执行yum -y install lrzsz进行安装)上传至ruozedata001主机的/home/hadoop/software目录下

3、ssh三台机器互信

1) 将三台机器的内网ip和hostname分别写入(root用户操作)三台主机的/etc/hosts文件中。

 如:

 172.24.117.89  ruozedata001

 172.24.117.91  ruozedata002

 172.24.117.90  ruozedata003

2) 三台主机都执行ssh-keygen命令(一路按回车)生成公钥和私钥

[hadoop@ruozedata001 ~]$ ssh-keygen


进入.ssh目录,复制公钥文件生成authorized_keys文件。

[hadoop@ruozedata001 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys


将ruozedata002和ruozedata003上的id_rsa.pub公钥内容追加进ruozedata001的authorized_keys文件,再将此文件分发到其他两台主机的.ssh目录下。


3) 将三台机器上的authorized_keys文件权限改为600
chmod 0600 ~/.ssh/authorized_keys

4) 在三台机器都执行一遍下面的命令(遇到需要输入yes的就输入)。如正常显示出日期,不再提示需要输入密码,则说明ssh互信配置成功。

ssh ruozedata001 date

ssh ruozedata002 date

ssh ruozedata003 date

Tips:authorized_keys文件中内容全在一行上,为避免直接拷贝粘贴可能带来的换行问题。可用sz命令将002和003机器上的id_rsa.pub下载到个人电脑改个名,再上传至001机器的.ssh目录。执行

[hadoop@ruozedata001 ~]$cat ~/.ssh/id_rsa_002.pub >> ~/.ssh/authorized_keys

[hadoop@ruozedata001 ~]$cat ~/.ssh/id_rsa_003.pub >> ~/.ssh/authorized_keys

就将另外两台主机的公钥追加进authorized_keys文件中了

四、在CentOS上安装组件

将001主机上的Hadoop、JDK、ZK软件包拷贝到002和003主机的/home/hadoop/software目录中。

[hadoop@ruozedata001 ~]$scp ~/software/* ruozedata002:/home/hadoop/software

[hadoop@ruozedata001 ~]$scp ~/software/* ruozedata003:/home/hadoop/software


组件的安装操作三台主机同时做,操作几乎一样

1、JDK的安装配置

  1. 用root用户创建/usr/java目录,解压JDK软件包至此目录

    [root@ruozedata001 ~]# mkdir /usr/java

    [root@ruozedata001 ~]# tar -zxvf /home/hadoop/software/jdk-8u45-linux-x64.gz -C /usr/java

    [root@ruozedata001 ~]# vi /etc/profile

2) 修改/usr/java/jdk1.8.0_45目录的权限(不修改的话会出现意想不到的坑)

  修改前

[root@ruozedata001 java]# ll /usr/java/

total 4

drwxr-xr-x 8 10 143 4096 Apr 11 2015 jdk1.8.0_45

  更改用户及用户组

[root@ruozedata001 java]# chown -R root:root /usr/java/*

[root@ruozedata001 java]# ll /usr/java/

total 4

drwxr-xr-x 8 root root 4096 Apr 11 2015 jdk1.8.0_45

3) 添加java的环境变量

export JAVA_HOME=/usr/java/jdk1.8.0_45

export PATH=$JAVA_HOME/bin:$PATH

保存退出,然后执行source命令使环境变量生效。查看java版本,检验是否环境变量配置正确.

[root@ruozedata001 ~]# source /etc/profile
[root@ruozedata001 ~]# java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

2、ZooKeeper的安装配置

  1. 切换至hadoop用户,解压ZK软件包至/home/hadoop/app下。

    [hadoop@ruozedata001 ~]$ tar -zxvf ~/software/zookeeper-3.4.6.tar.gz -C ~/app

2)为了变更版本方便,为zookeeper-3.4.6目录创建一个软连接
[hadoop@ruozedata001 ~]$ ln -s ~/app/zookeeper-3.4.6 ~/app/zookeeper

  1. 修改配置文件

  i. 进入zookeeper配置文件目录

    [hadoop@ruozedata001 ~]$ cd ~/app/zookeeper/conf/

  ii. 复制模板文件改名为zoo.cfg

    [hadoop@ruozedata001 conf]$ cp zoo_sample.cfg zoo.cfg

  iii. 修改zoo.cfg配置文件

      根据我们的目录规划更改dataDir的值

    dataDir=/home/hadoop/data/zookeeper

      添加server信息

    server.1=ruozedata001:2888:3888

    server.2=ruozedata002:2888:3888

    server.3=ruozedata003:2888:3888

  1. 在/home/hadoop/data目录下新建zookeeper目录

[hadoop@ruozedata001 ~]$ mkdir ~/data/zookeeper

  1. 为每个主机上的zookeeper创建id标识文件

    ruozedata001主机

  [hadoop@ruozedata001 ~]$ echo 1 > ~/data/zookeeper/myid

    ruozedata002主机

  [hadoop@ruozedata002 ~]$ echo 2 > ~/data/zookeeper/myid

    ruozedata003主机

  [hadoop@ruozedata003 ~]$ echo 3 > ~/data/zookeeper/myid

  Tips:注意 > 符号的左右两边是有空格的,否则会生成一个零字节的文件。

  1. 配置环境变量。

  i. 修改~/.bash_profile文件。

  [hadoop@ruozedata001 ~]$ vi ~/.bash_profile

    在配置文件中添加环境变量

  export ZOOKEEPER_HOME=/home/hadoop/app/zookeeper

  export PATH=$ZOOKEEPER_HOME/bin:$PATH

  ii. 执行source命令使环境变量生效

[hadoop@ruozedata001 ~]$ source .bash_profile

  iii. 验证环境变量是否生效

  [hadoop@ruozedata001 ~]$ which zkServer.sh

  ~/app/zookeeper/bin/zkServer.sh

  1. 启动ZooKeeper

      i. 全部主机都执行启动命令

    [hadoop@ruozedata001 ~]$ zkServer.sh start

      ii. 全部主机都查看运行状态

    [hadoop@ruozedata001 ~]$ zkServer.sh status

      会有一个ZK的mode是leader,另外两个的mode是follower

      Tips:生产上的经验是ZK全部启动后,等个一两分钟后再执行zkServer.sh status查看状态是否正常

3.Hadoop的安装配置

  1. 切换至hadoop用户,解压Hadoop软件包至/home/hadoop/app下。

    [hadoop@ruozedata001 ~]$ tar -zxvf ~/software/hadoop-2.6.0-cdh5.15.1.tar.gz -C ~/app

2)为了变更版本方便,为zookeeper-3.4.6目录创建一个软连接
[hadoop@ruozedata001 ~]$ ln -s ~/app/hadoop-2.6.0-cdh5.15.1 ~/app/hadoop

  1. 修改配置文件(/home/hadoop/app/hadoop/etc/hadoop目录下)

      i. 修改hadoop-env.sh

        修改前:export JAVA_HOME=${JAVA_HOME}

        修改前:export JAVA_HOME=/usr/java/jdk1.8.0_45

  ii. 修改core-site.xml、hdfs-site.xml、slaves、yarn-site.xml

      为方便直接将上述文件删除,从个人电脑拉取上来。

      所需配置文件存放在https://pan.baidu.com/s/1LmRS3JySP7xBFLqYJGwiuw

  1. 配置环境变量

      i. 在~/.bash_profile中添加Hadoop的环境变量

    export HADOOP_HOME=/home/hadoop/app/hadoop

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

  ii. 使环境变量生效

[hadoop@ruozedata001 ~]$ source ~/.bash_profile

  iii. 检验环境变量是否生效

[hadoop@ruozedata001 ~]$ which hdfs

~/app/hadoop/bin/hdfs

  1. 启动Hadoop集群

    i. 启动前先检查所有ZooKeeper的运行状态。正常时才能启动Hadoop。

  ii. 首先启动JournalNode
[hadoop@ruozedata001 ~]$ hadoop-daemon.sh start journalnode

    使用jps命令查看是否有JournalNode进程

  iii. NameNode格式化(只对ruozedata001操作)

[hadoop@ruozedata001 ~]$ hadoop namenode -format

    看到输出信息中有“successfully format”字样,说明格式化成功。

  iv. 同步NameNode元数据

[hadoop@ruozedata001 ~]$ scp -r /home/hadoop/data/dfs/name ruozedata002:/home/hadoop/data/dfs

  v. 初始化ZKFC

[hadoop@ruozedata001 ~]$ hdfs zkfc -formatZK

    看到输出信息中有“successfully created”字样,说明初始化成功。

  vi. 启动HDFS
[hadoop@ruozedata001 ~]$ start-dfs.sh

  Tips:${HADOOP_HOME}/etc/hadoop/slaves文件必须是ASCII text格式才能正确启动集群,使用file命令可查看。

如需单进程启动,可执行

hadoop-daemon.sh start namenode

hadoop-daemon.sh start datanode

hadoop-daemon.sh start journalnode

hadoop-daemon.sh start zkfc

  vii. 启动YARN框架

    在ruozedata001主机上执行start-yarn.sh,此时在ruozedata002主机上没有启动RM进程,需执行yarn-daemon.sh start resourcemanager手工启动。

  viii. 启动JobHistoryServer

    在ruozedata001主机上执行 mr-jobhistory-daemon.sh start historyserver。

  ix. 验证集群启动成功

    ①使用jps命令

    ②在浏览器打开页面查看。http://[001主机或002主机的IP]:50070 和 http://[active主机的IP]:8088,http://[standby主机的IP]:8088/cluster/cluster和http://[001主机IP]:19888

5.关闭集群

[hadoop@ruozedata001 ~]# mr-jobhistory-daemon.sh stop historyserver

[hadoop@ruozedata002 ~]# yarn-daemon.sh stop resourcemanager

[hadoop@ruozedata001 ~]# stop-all.sh

[hadoop@ruozedata001 ~]# zkServer.sh stop

[hadoop@ruozedata002 ~]# zkServer.sh stop

[hadoop@ruozedata003 ~]# zkServer.sh stop

你可能感兴趣的:(Hadoop集群部署)