Hadoop 2.6.0+ZooKeeper+Hive HA高可用集群安装

Hadoop 2.6.0+ZooKeeper+Hive HA高可用集群安装

版本描述

系统版本为  CentOS release 6.5 (Final)

Hadoop版本:hadoop 2.6.0 64 bit 版本

Zookeeper 版本:zookeeper-3.4.6

Hive版本:apache-hive-1.1.0

JDK版本哦openjdk 1.8.0

说明:apache社区上发布的是32位的编译版本,直接安装在64位上会出现库的问题

至于如何获取64位的版本,可以自己编译也可以从网上获取

网络规划

本系统设计的部件如下:hadoop2.6.0、zookeeper-3.4.6.tar.gz、hive-1.1.0、mysql 5.6.21

IP

hostname

部件

进程

172.29.31.74

namenodem

Hadoop

ResourceManager

NameNode

DFSZKFailoverController(zkfc)

172.29.31.60

namenodes

Hadoop、hive

ResourceManager

NameNode

DFSZKFailoverController(zkfc)

 

172.29.31.64

datanode64

Hadoop、zookeeper

JournalNode

NodeManager

DataNode

zookeeper

172.29.31.68

Datanode68

Hadoop、zookeeper

JournalNode

NodeManager

DataNode

zookeeper

172.29.31.71

Datanode71

Hadoop、zookeeper

JournalNode

NodeManager

DataNode

zookeeper

172.29.31.66

mysql

mysql

 

环境准备

关闭防火墙

在每个主机上做同样的操作 

在root用户下

  执行如下命令:

  serviceiptables stop

配置主机名

在每个主机上做同样的操作

用户root用户

修改主机名:

1、vi/etc/hostname

2、把其中原来的名修改为网络规划中指定的主机名

3、vi/etc/hosts

4、在文件中添加如下数据

   172.29.31.74  namenodem

172.29.31.60  namenodes

172.29.31.68  datanode68

172.29.31.71  datanode71

172.29.31.64  datanode64

5、重启生效

用户创建

 

用户创建

在每个主机上做同样的操作

用root用户登录,在所有节点上创建用户,用户名为hadoop ,密码:hadoop (这是用我的名字创建的,当然是可以修改的)

1、创建用户组:groupadd hadoopgrp

2、执行如下命令: useradd hadoop -g hadoopgrp -d /home/hadoop

 

3、用户建立好,在设置密码

  执行如下命令: passwd hadoop

  在提示输入密码处输入:hadoop

  在提示确认密码处输入:hadoop

建立信任关系

创建密钥

所有的主机上都执行同样测操作

  1、切换用户到hadoop

    sudo su hadoop

  2、创建.ssh 文件夹

     在/home/hadoop目录下

     mkdir .ssh

设置 .ssh 文件夹权限为

 chmod 700 .ssh

  3、创建密钥

    执行如下命令:ssh-keygen -t rsa

   持续回车确认,完成后在 .ssh目录下会产生如下两个文件 :id_rsa(私钥文件)id_rsa.pub(公钥文件)

建立信任关系 

1、所有主机上的公钥copy到同一台机器上(我这里copy到主机namenodem上)

    scp ~/.ssh/id_rsa.pub hadoop@ namenodem:~/.ssh/id_rsa_ namenodes.pub

    (注意:加粗的部分一定要按源主机区分,否则会覆盖原来主机上的配置文件)

  5、创建authorized_keys

     进入namenodem主机中的.ssh目录中

     执行:touch authorized_keys

   6、把所有的公钥全部写入authorized_keys文件中

 执行:cat id_rsa_ namenodes.pub >> authorized_keys

 (注意:加粗的部分一定要按源主机区分,所有上步copy过来的公钥都要加入,还要把自己的公钥加入

  7、设置authorized_keys权限

    chmod 600 authorized_keys

  8、把authorized_keys文件copy到其他所有节点的/home/hadoop/.ssh 目录下

     执行:scp ~/.ssh/authorized_keyshadoop@ namenodes:~/.ssh/

     (注意:加粗的部分一定要按目的主机区分,不同的主机需要修改的

  9、测试是否建立完成

   输入命令ssh hadoop@namnodes

   敲回车直接过去,不用输入密码就表示建立好了。

   (注意:红色部分为主机名需要根据登入的不同的主机修改,这里每两个都登录一下,测试一下)

 

安装jdk

这里就不在描述如何安装jdk了,但是要注意把jdk的JAVA_HOME配置在系统的PATH中

安装zookeeper

 使用hadoop用户,先配置的bigdata-03

下载

http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

解压

1、上传zookeeper-3.4.6.tar.gz到/home/hadoop 目录下

2、解压

  tar -zxvf zookeeper-3.4.6.tar.gz

配置

1、将~/zookeeper-3.4.6/conf目录下的zoo_sample.cfg重新命名为zoo.cfg

cpzoo_sample.cfg zoo.cfg

2、修改zoo.cfg文件

修改:

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

添加:

server.1=datanode64:2888:3888

server.2=datanode68:2888:3888

server.3=datanode71:2888:3888

3、创建数据目录

mkdir/home/hadoop/zookeeper-3.4.6/data

4、设置myid

创建文件 vi /home/hadoop/zookeeper-3.4.6/data/myid

在文件添加 1

(这个自要更具第二步中配置的serever后面的主机名对应)

在其他机器上安装

   1、copy目录

       scp -r /home/hadoop/zookeeper-3.4.6/ hadoop@ datanode68:/home/hadoop/

      (注意:修改主机名,把zookeeper copy到其他几个主机上

   2、修改myid

      

主机名

myid

datanode64

1

datanode68

2

datanode71

3

启动

进入每台主机的

cd ~/zookeeper-3.4.6/bin

启动zookeeper

./zkServer.sh start

检查是否启动

./zkServer.sh status

 

安装hadoop

下载安装包:

http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz

安装namenodem节点

1、把安装包hadoop-2.6.0.tar.gz 传到/home/hadoop目录下

2、tar开安装包 ,执行命令:tar -zxvf hadoop-2.6.0.tar.gz

3、配置hadoop的环境变量

   A、切换到root用户,进入/etc/profile.d 目录

   B、在这个目录下新建文件,执行命令:touch hadoop-2.6.0.sh

   C、在文件中写入如下配置数据

HADOOP_HOME=/home/hadoop/hadoop-2.6.0

export HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export HADOOP_YARN_HOME=$HADOOP_HOME

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

export HADOOP_LOG_DIR=$HADOOP_HOME/logs

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

exportHADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"

export HADOOP_BIN=$HADOOP_HOME/bin

export PATH=$HADOOP_BIN:$PATH

D、切换到hadoop用户使配置生效,执行命令:source /etc/profile

E、执行命令:echo$HADOOP_HOME 如果看见输出为/home/hadoop/hadoop-2.6.0表示配置成功

4、建立数据存储目录(提示这步需要用root用户,安装开发环境可以不需要这步)

   默认hadoop数据存放在HADOOP_HOME/data目录,需要通过软连接的形式把它链接到空间更大的地方,如果是测试可以不用,如果不用就直接在HADOOP_HOME目录下mkdir一个data目录

   A、在大空间位置建立目录mkdir data  进入data目录在执行mkdir hadoop

   B、修改文件/data的own,执行命令: chown -R hadoop:hadoopgrp /data

   C、建立软连接 执行命令:ln -s /data/hadoop /home /hadoop/ hadoop-2.6.0/data

5、配置slaves

配置文件在$HADOOP_HOME/etc/hadoop下

在slaves文件中配置datanode的ip地址格式如下

datanode64

datanode68

datanode71

 

6、配置core-site.xml

  

<property>

<name>fs.defaultFS</name>

<value>hdfs://masters</value>

</property>

<property>

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

<value>/home/hadoop/hadoop-2.6.0/tmp</value>

</property>

<property>

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

<value>datanode64:2181,datanode68:2181,datanode71:2181</value>

</property>

 

 

7、配置hdfs‐site.xml 

<property>

                <name>dfs.nameservices</name>

                <value>masters</value>

        </property>

        <property>

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

                <value>namenodem,namenodes</value>

        </property>

        <property>

                <name>dfs.namenode.rpc-address.masters.namenodem</name>

                <value>namenodem:50090</value>

        </property>

        <property>

                <name>dfs.namenode.http-address.masters.namenodem</name>

                <value>namenodem:50070</value>

        </property>

        <property>

                <name>dfs.namenode.rpc-address.masters.namenodes</name>

                <value>namenodes:50090</value>

        </property>

        <property>

                <name>dfs.namenode.http-address.masters.namenodes</name>

                <value>namenodes:50070</value>

        </property>

        <property>

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

                <value>qjournal://datanode64:8485;datanode68:8485;datanode71:8485/masters</value>

        </property>

        <property>

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

                <value>/home/hadoop/hadoop-2.6.0/journal</value>

        </property>

        <property>

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

                <value>true</value>

        </property>

        <property>

                <name>dfs.client.failover.proxy.provider.masters</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>

        <property>

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

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

        </property>

        <property>

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

                <value>30000</value>

        </property>

 

 

8、配置mapred‐site.xml

<property>

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

<value>yarn</value>

</property>

 

9、配置yarn-site.xml

  

         <property>

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

                <value>true</value>

        </property>

        <property>

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

                <value>RM_HA_ID</value>

        </property>

        <property>

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

                <value>rm1,rm2</value>

        </property>

        <property>

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

                <value>namenodem</value>

        </property>

        <property>

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

                <value>namenodes</value>

        </property>

        <property>

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

                <value>true</value>

        </property>

        <property>

                <name>yarn.resourcemanager.store.class</name>           <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>

        </property>

        <property>

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

                <value>datanode64:2181,datanode68:2181,datanode71:2181</value>

        </property>

        <property>

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

                <value>mapreduce_shuffle</value>

        </property>

 

10、配置slaves文件

datanode64

datanode68

datanode71

 

安装其他节点

这里的其他节点指namnodeslave和datanode

1、把上面配置好的hadoop 打包

   用hadoop用户在/home/hadoop目录下

tar -zcvfhadoop-2.6.0-run.tar.gz hadoop-2.6.0

2、copy到其他节点

    scp~/hadoop-2.6.0-run.tar.gz hadoop@datanode64:~/

3、在各个节点tar开包

     tar-zxvf hadoop-2.6.0-run.tar.gz

4、按照nodename节点的配置方式配置环境变量


启动journalnode

1、  启动journalnode(在datanode64、datanode68、datanode71)

进入:/home/hadoop/hadoop-2.6.0/sbin

执行命令:./hadoop-daemon.shstart journalnode

 

格式化 hdfs

1、在namenode master格式化

配置好后在namenodem机器上进入hadoop的bin目录格式化文件系统(一定要)

hdfs namenode -format    #格式化文件系统

2、格式化namenode slave

       把master上格式化的数据copy到slave上

     scp–r /home/hadoop/hadoop-2.6.0/tmp hadoop@namenodes:/home/hadoop/hadoop-2.6.0/tmp

格式化ZK

在namnodem上执行:

hdfs zkfc -formatZK

启动hadoop

1、  启动hdfs(在namenodem上)

在/home/hadoop/hadoop-2.6.0/sbin下

start-dfs.sh

2、  启动yarn(在namenodem上)

在/home/hadoop/hadoop-2.6.0/sbin下

./start-yarn.sh

3、  启动yarn standby

. /yarn-daemon.sh start resourcemanager

4、用jps命令检查每个节点对应的进程是否启动,进程参考网络规划表中的进程

 

在浏览器中输入 http://172.29.31.74:50070/dfshealth.html 进入页面表示成功

在浏览器中输入 http://172.29.31.74:8088/cluster 进入页面表示yarn安装成功

 

安装mysql

请在网上寻找安装文档

Hive安装

下载安装包

http://apache.fayea.com/apache-mirror/hive/stable/apache-hive-1.1.0-bin.tar.gz

安装

1、上传包

上传hive包到nodenames上(我是这样规划的,在其他节点也可以)到

/home/hadoop上

2、解压

  tar–zxvf apache-hive-1.1.0-bin.tar.gz

3、重命名包

mv apache-hive-1.1.0-bin hive-1.1.0

配置

1、  配置环境变量

进入环境变量配置目录,这里需要切换到root用户:cd /etc/profile.d

创建配置文件:touchhive-1.1.0.sh

打开配置文件:vi hive-1.1.0.sh

配置环境变量:

#set hive environment

HIVE_HOME=/home/hadoop/hive-1.1.0

PATH=$HIVE_HOME/bin:$PATH

CLASSPATH=$CLASSPATH:$HIVE_HOME/lib

export HIVE_HOME

export PATH

export CLASSPATH

保存退出::wq!

切换到hadoop用户立即生效:source /etc/profile

2、  配置hive-env.sh

进入配置目录: cd /home/hadoop/hive-1.1.0/conf

打开配置文件hive-env.sh,配置

# Set HADOOP_HOME to point to a specific hadoop install directory

HADOOP_HOME=/home/hadoop/hadoop-2.6.0

# Hive Configuration Directory can be controlled by:

 export HIVE_CONF_DIR=/home/hadoop/hive-1.1.0/conf

 

3、  配置hive-site.xml

创建配置文件

cp hive-default.xml.template hive-site.xml

 

在同上的目录下

<property>

  <name>hive.metastore.warehouse.dir</name>

  <value> hdfs://masters:50090/hive/warehouse</value>

  <description>location of default database for the warehouse</description>

</property>

<property>

  <name>hive.exec.scratchdir</name>

  <value> hdfs://masters:50090/hive/scratchdir</value>

  <description>Scratch space for Hive jobs</description>

</property>

<property>

  <name>hive.querylog.location</name>

  <value>/home/hadoop/ hive-1.1.0/logs</value>

  <description>

    Location of Hive run time structured log file

  </description>

</property>

<property>

  <name>javax.jdo.option.ConnectionURL</name>

  <value>jdbc:mysql://172.29.31.66:3306/hive_metadata?createDatabaseIfNotExist=true</value>

  <description>JDBC connect string for a JDBC metastore</description>

</property>

<property>

  <name>javax.jdo.option.ConnectionDriverName</name>

  <value>com.mysql.jdbc.Driver</value>

  <description>Driver class name for a JDBC metastore</description>

</property>

<property>

  <name>javax.jdo.option.ConnectionUserName</name>

  <value>root</value>

  <description>username to use against metastore database</description>

</property>

<property>

  <name>javax.jdo.option.ConnectionPassword</name>

  <value>××××××</value>

  <description>password to use against metastore database</description>

</property>

<property>

   <name>hive.exec.local.scratchdir</name>

   <value>/home/hadoop/hive-1.1.0/local/${system:user.name}</value>

   <description>Local scratch space for Hive jobs</description>

  </property>

<property>

   <name>hive.downloaded.resources.dir</name>

   <value>/home/hadoop/hive-1.1.0/local/${hive.session.id}_resources</value>

   <description>Temporary local directory for added resources in theremote file system.</description>

  </property>

<property>

   <name>hive.server2.logging.operation.log.location</name>

   <value>/home/hadoop/hive-1.1.0/logs/operation_logs</value>

   <description>Top leveldirectory where operation logs are stored if logging functionality isenabled</description>

  </property>


 

在hive-1.1.0下创建local目录

mkdir local

 

4、  配置log4j

在同上的目录下

创建配置文件:

cp hive-exec-log4j.properties.template hive-exec-log4j.properties

cp hive-log4j.properties.template hive-log4j.properties

修改上面两个文件中的配置

hive.log.dir=/home/hadoop/ hive-1.1.0/logs

log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter

注意如果没有logs目录就建立一个 执行命令

mkdir /home/hadoop/hive-1.1.0/logs

 

添加驱动包

1、下载驱动包

我用的mysql是mysql 5.6.15 版本,配套的jdbc是mysql-connector-java-5.1.24-bin.jar

这个jar在网上一大把,自己在网上下载就可以了,一定要根据mysql版本选择配套的版本

2、添加驱动包

   把驱动包放到 $HIVE_HOME/lib 目录下

3、修改hadoop的库文件

在$HADOOP_HOME/share/hadoop/yarn/lib下备份jline-0.9.94.jar

mv jline-0.9.94.jar jline-0.9.94.jar.bak

Copy高版本的jline

cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME /share/hadoop/yarn/lib

 

启动

执行如下命令:

hive

 

FAQ 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值