生产环境下hadoopHA集群及HbaseHA集群配置

一、环境准备

成都创新互联是专业的滨州网站建设公司,滨州接单;提供成都网站制作、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行滨州网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

操作系统版本:
centos7 64位

hadoop版本:
hadoop-2.7.3

hbase版本:

hbase-1.2.4

1、机器及角色

IP角色
192.168.11.131NamenodeDFSZKFailoverControllerResourceManagerJobhistory



HMasterQuorumPeerMain
192.168.11.132NamenodeDFSZKFailoverController





HMasterQuorumPeerMain
192.168.11.133



DatanodeNodeManagerJournalNodeHRegionServer
QuorumPeerMain
192.168.11.134



DatanodeNodeManagerJournalNodeHRegionServer
QuorumPeerMain
192.168.11.135



DatanodeNodeManagerJournalNodeHRegionServer
QuorumPeerMain

master1:

# hostnamectl set-hostname master1

其他主机名分别配置为master2、slave1、slave2、slave3

2、所有节点关闭防火墙及selinux

说明:

命令前面#表示在root用户下的操作,$表示在hduser用户下操作的。

查看防火墙状态

# firewall-cmd --state

running

关闭防火墙

# systemctl stop firewalld.service

防火墙配置为禁用状态

# systemctl disable firewalld.service

立即关闭selinux(临时)

# setenforce 0

永久关闭selinux

# vi /etc/sysconfig/selinux

SELINUX=enforcing --> disabled

3、配置yum源

所有节点配置yum源

# cd 

# mkdir apps

http://mirrors.163.com/centos/7/os/x86_64/Packages/wget-1.14-15.el7.x86_64.rpm

# rpm -i wget-1.14-15.el7.x86_64.rpm 

# cd /etc/yum.repos.d

# wget  http://mirrors.aliyun.com/repo/Centos-7.repo

# mv Centos-7.repo CentOS-Base.repo 

# scp CentOS-Base.repo root@192.168.11.131:/etc/yum.repos.d/

# scp CentOS-Base.repo root@192.168.11.132:/etc/yum.repos.d/

# scp CentOS-Base.repo root@192.168.11.133:/etc/yum.repos.d/

# scp CentOS-Base.repo root@192.168.11.134:/etc/yum.repos.d/

# yum clean all

# yum makecache

# yum update

4、配置ntp时间同步,master1为ntp服务端,其他为ntp客户端

所有节点安装ntp

# yum install -y ntp

ntp server端:

首先配置当前时间

# date -s "2018-05-27 23:03:30"

编辑配置文件

# vi /etc/ntp.conf

在注释下添加两行

#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

server 127.127.1.0

fudge 127.127.1.0 stratum 11

注释下面

#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst

启动ntp服务并配置为开机自启动

# systemctl start ntpd.service

# systemctl enable ntpd.service

ntp客户端(其余四台都为ntp客户端):

# vi /etc/ntp.conf

同样注释下添加两行

#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

server 192.168.11.131

fudge 127.127.1.0 stratum 11

四行添加注释

#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst

# systemctl start ntpd.service

# systemctl enable ntpd.service

手动同步时间

# ntpdate 192.168.11.131

28 May 07:04:50 ntpdate[1714]: the NTP socket is in use, exiting

对出现的报错做处理

# lsof -i:123

-bash: lsof: command not found

# yum install -y lsof

# lsof -i:123

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

ntpd    1693  ntp   16u  IPv4  25565      0t0  UDP *:ntp 

ntpd    1693  ntp   17u  IPv6  25566      0t0  UDP *:ntp 

ntpd    1693  ntp   18u  IPv4  25572      0t0  UDP localhost:ntp 

ntpd    1693  ntp   19u  IPv4  25573      0t0  UDP localhost.localdomain:ntp 

ntpd    1693  ntp   20u  IPv6  25574      0t0  UDP localhost:ntp 

ntpd    1693  ntp   21u  IPv6  25575      0t0  UDP localhost.localdomain:ntp 

杀掉ntp的进程,注意ntp进程id各不相同,按实际情况处理

# kill -9 1693

再次同步时间成功

# ntpdate 192.168.11.131

27 May 23:06:14 ntpdate[1728]: step time server 192.168.11.131 offset -28808.035509 sec

5、修改主机名和hosts文件

所有节点修改主机名(永久)

# hostnamectl set-hostname master1~slave3

临时修改主机名

# hostname master1~slave3

主节点修改hosts文件

# vi /etc/hosts

192.168.11.131    master1

192.168.11.132    master2

192.168.11.133    slave1

192.168.11.134    slave2

192.168.11.135    slave3

把hosts文件覆盖到其他机器

# scp /etc/hosts root@192.168.11.132~135:/etc/

所有节点创建管理用户和组

创建组和用户

# groupadd hduser

# useradd -g hduser hduser

# passwd hduser

二、配置hadoop环境

1、创建目录并赋权

每台机器上创建如下文件夹

# mkdir /data1

# mkdir /data2

修改权限

# chown hduser:hduser /data1

# chown hduser:hduser /data2

# su hduser

$ mkdir -p /data1/hadoop_data/hdfs/namenode

$ mkdir -p /data2/hadoop_data/hdfs/namenode 

$ mkdir -p /data1/hadoop_data/hdfs/datanode(NameNode不要)

$ mkdir -p /data2/hadoop_data/hdfs/datanode(NameNode不要)

$ mkdir -p /data1/hadoop_data/pids

$ mkdir -p /data2/hadoop_data/pids 

$ mkdir -p /data1/hadoop_data/hadoop_tmp

$ mkdir -p /data2/hadoop_data/hadoop_tmp

2、无密验证

master1和master2节点操作

# su - hduser

$ ssh-keygen -t rsa 

$ cd ~/.ssh

$ cat id_rsa.pub >> authorized_keys

master1节点操作

$ ssh-copy-id -i ~/.ssh/id_rsa.pub hduser@master2

master2节点操作

$ scp ~/.ssh/authorized_keys hduser@master1:~/.ssh/

slave1、slave2和slave3节点创建.ssh目录

# mkdir /home/hduser/.ssh 

# chown hduser:hduser /home/hduser/.ssh 

master1节点操作

$ scp ~/.ssh/authorized_keys hduser@slave1:~/.ssh

$ scp ~/.ssh/authorized_keys hduser@slave2:~/.ssh

$ scp ~/.ssh/authorized_keys hduser@slave3:~/.ssh

master1和master2节点验证

验证方法,分别在两个节点,ssh登陆本机(hdusser用户)及其他四个节点,看看是不是无密登陆。

如果未通过验证,所有机器执行下面命令

$ chmod 600 ~/.ssh/authorized_keys

$ chmod 700 ~/.ssh

3、所有节点配置java环境

$ mkdir -p /data1/usr/src 

上传包到/data1/usr/src目录下

$ cd /data1/usr/src

$ tar xf jdk1.7.0_79.tar -C /data1/usr/

$ vi ~/.bashrc

export JAVA_HOME=/data1/usr/jdk1.7.0_79      

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar

export PATH=$PATH:$JAVA_HOME/bin

$ source ~/.bashrc

4、mastar1节点配置hadoop

下载hadoop-2.7.3.tar.gz,上传到/data1/usr/src

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

$ cd /data1/usr/src 

$ tar -zxf hadoop-2.7.3.tar.gz -C /data1/usr/

编辑hadoop-env.sh

$ vi /data1/usr/hadoop-2.7.3/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/data1/usr/jdk1.7.0_79

export HADOOP_PID_DIR=/data1/hadoop_data/pids

export HADOOP_PID_DIR=/data2/hadoop_data/pids

export HADOOP_MAPRED_PID_DIR=/data1/hadoop_data/pids

编辑mapred-env.sh

$ vi /data1/usr/hadoop-2.7.3/etc/hadoop/mapred-env.sh

export HADOOP_MAPRED_PID_DIR=/data2/hadoop_data/pids

编辑yarn-env.sh

$ vi /data1/usr/hadoop-2.7.3/etc/hadoop/yarn-env.sh

export YARN_PID_DIR=/data2/hadoop_data/pids

编辑core-site.xml

$ vi /data1/usr/hadoop-2.7.3/etc/hadoop/core-site.xml

 

   fs.defaultFS

   hdfs://masters

 

 

 

   hadoop.tmp.dir

   /data2/hadoop_data/hadoop_tmp

 

 

 

   ha.zookeeper.quorum

   master1:2181,master2:2181,slave1:2181,slave2:2181,slave3:2181

 

编辑hdfs-site.xml

$ vi /data1/usr/hadoop-2.7.3/etc/hadoop/hdfs-site.xml

       

       

               dfs.nameservices

               masters

       

       

       

               dfs.ha.namenodes.masters

               master1,master2

       

       

       

               dfs.namenode.rpc-address.masters.master1

               master1:9000

       

       

       

               dfs.namenode.http-address.masters.master1

               master1:50070

       

       

       

               dfs.namenode.rpc-address.masters.master2

               master2:9000

       

       

       

               dfs.namenode.http-address.masters.master2

               master2:50070

       

       

       

               dfs.namenode.name.dir

               file:///data2/hadoop_data/hdfs/namenode

       

       

       

               dfs.datanode.data.dir

               file:///data1/hadoop_data/hdfs/datanode,data2/hadoop_data/hdfs/datanode

       

       

       

               dfs.namenode.shared.edits.dir

               qjournal://slave1:8485;slave2:8485;slave3:8485/masters

       

       

       

               dfs.journalnode.edits.dir

               /data2/hadoop_data/journal

       

       

       

               dfs.ha.automatic-failover.enabled

               true

       

       

       

               dfs.client.failover.proxy.provider.masters

               org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

       

       

       

               dfs.ha.fencing.methods

               

                 sshfence

                 shell(/bin/true)

               

       

       

       

               dfs.ha.fencing.ssh.private-key-files

               /home/hduser/.ssh/id_rsa

       

       

       

               dfs.ha.fencing.ssh.connect-timeout

               30000

       

       

       

               dfs.datanode.max.xcievers

               8192

       

       

               dfs.qjournal.write-txns.timeout.ms

               60000

       

编辑yarn-site.xml

$ vi /data1/usr/hadoop-2.7.3/etc/hadoop/yarn-site.xml

       

               yarn.resourcemanager.ha.enabled

               true

       

       

       

               yarn.resourcemanager.cluster-id

               RM_HA_ID

       

       

       

               yarn.resourcemanager.ha.rm-ids

               rm1,rm2

       

       

       

               yarn.resourcemanager.hostname.rm1

               master1

       

       

               yarn.resourcemanager.hostname.rm2

               master2

       

       

               yarn.resourcemanager.recovery.enabled

               true

       

       

       

               yarn.resourcemanager.store.class

               org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore

       

       

       

               yarn.resourcemanager.zk-address

               master1:2181,master2:2181,slave1:2181,slave2:2181,slave3:2181

       

       

               yarn.nodemanager.aux-services

               mapreduce_shuffle

       

       

               yarn.nodemanager.aux-services.mapreduce.shuffle.class

               org.apache.hadoop.mapred.ShuffleHandler

       

编辑mapred-site.xml

$ cp /data1/usr/hadoop-2.7.3/etc/hadoop/mapred-site.xml.template /data1/usr/hadoop-2.7.3/etc/hadoop/mapred-site.xml

$ vi /data1/usr/hadoop-2.7.3/etc/hadoop/mapred-site.xml

 

 

   mapreduce.framework.name

   yarn

 

编辑slaves

$ vi /data1/usr/hadoop-2.7.3/etc/hadoop/slaves

slave1

slave2

slave3

同步hadoop配置到其他节点

$ for ip in `seq 2 5`;do scp -rpq /data1/usr/hadoop-2.7.3 192.168.11.13$ip:/data1/usr;done

5、各节点zookeeper配置

http://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

上传包到/data1/usr/src目录下

创建目录

$ mkdir -p /home/hduser/storage/zookeeper

$ cd /data1/usr/src

$ tar -zxf zookeeper-3.4.6.tar.gz -C /data1/usr

编辑zoo.cfg

$ cp /data1/usr/zookeeper-3.4.6/conf/zoo_sample.cfg /data1/usr/zookeeper-3.4.6/conf/zoo.cfg

$ vi /data1/usr/zookeeper-3.4.6/conf/zoo.cfg

dataDir=/home/hduser/storage/zookeeper

server.1=master1:2888:3888

server.2=master2:2888:3888

server.3=slave1:2888:3888

server.4=slave2:2888:3888

server.5=slave3:2888:3888

master1-slave3各节点依次做操作

$ echo "1" > /home/hduser/storage/zookeeper/myid

$ echo "2" > /home/hduser/storage/zookeeper/myid

$ echo "3" > /home/hduser/storage/zookeeper/myid

$ echo "4" > /home/hduser/storage/zookeeper/myid

$ echo "5" > /home/hduser/storage/zookeeper/myid

各节点启动ZK服务

$ cd /data1/usr/zookeeper-3.4.6/bin 

$ ./zkServer.sh start 

6、slave1、slave2和slave3启动journalnode

$ cd /data1/usr/hadoop-2.7.3/sbin 

$ ./hadoop-daemon.sh start journalnode 

用jps确认启动结果

7、在master1上格式化zookeeper节点格式化(第一次)

$ cd /data1/usr/hadoop-2.7.3

$ ./bin/hdfs zkfc -formatZK

8、在master1上执行命令格式化文件系统

./bin/hadoop namenode -format

9、在master1上启动namenode和zkfc服务

./sbin/hadoop-daemon.sh start namenode

./sbin/hadoop-daemon.sh start zkfc

10、需要在master2(备节点)上执行数据同步

./bin/hdfs namenode –bootstrapStandby

在master1上拷贝文件到master2

scp -r /data2/hadoop_data/hdfs/namenode hduser@master2:/data2/hadoop_data/hdfs/

11、在master2上启动namenode和zkfc服务

./sbin/hadoop-daemon.sh start namenode

./sbin/hadoop-daemon.sh start zkfc

12、设置master1为active

./bin/hdfs haadmin -transitionToActive master1

./bin/hdfs haadmin -getServiceState master1

13、在master1上启动datanode

./sbin/hadoop-daemons.sh start datanode

14、启动HDFS(第二次以后)

在master1上执行命令:

./sbin/start-dfs.sh

15、启动YARN

在master1上执行命令:

./sbin/start-yarn.sh

16、启动Jobhistory

./sbin/mr-jobhistory-daemon.sh start historyserver

17、验证

验证namenode

http://master1:50070

Overview 'master1:9000' (active)

http://master2:50070

Overview 'master2:9000' (standby)

18、验证文件系统

上传文件

./bin/hadoop fs -put /data1/usr/hadoop-2.7.3/etc/hadoop /test/hadoop

./bin/hadoop fs -ls /test

19、namenode的备份验证

杀死master1,master2变为active

20、验证yarn

./bin/hadoop jar /data1/usr/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test/hadoop /test/out

三、安装HBASE

下载hbase-1.2.4-bin.tar.gz,解压

$ cd /data1/usr/src

$ tar -zxvf hbase-1.2.4-bin.tar.gz  -C /data1/usr/

3、创建目录

$ mkdir -p /data1/hadoop_data/hbase_tmp

$ mkdir -p /data2/hadoop_data/hbase_tmp 

2、配置master1的hbase环境

配置hbase-env.sh

$ vi /data1/usr/hbase-1.2.4/conf/hbase-env.sh

export JAVA_HOME=/data1/usr/jdk1.7.0_79

export HBASE_PID_DIR=/data2/hadoop_data/pids

export HBASE_MANAGES_ZK=false

export HADOOP_HOME=/data1/usr/hadoop-2.7.3

3、配置hbase-site.xml

$ vi /data1/usr/hbase-1.2.4/conf/hbase-site.xml

   

       hbase.rootdir

       hdfs://masters/hbase

   

   

   

       hbase.cluster.distributed

       true

   

   

       hbase.master.port

       60000

   

   

       hbase.tmp.dir

       /data2/hadoop_data/hbase_tmp

   

   

       hbase.zookeeper.quorum

       master1,master2,slave1,slave2,slave3

   

4、配置regionservers

$ vi /data1/usr/hbase-1.2.4/conf/regionservers

slave1

slave2

slave3

5、配置backup-masters

$ vi /data1/usr/hbase-1.2.4/conf/backup-masters

master2

6、移除 HBase 里面的不必要 log4j 的 jar 包

cd ${HBASE_HOME}/lib

mv slf4j-log4j12-1.7.5.jar slf4j-log4j12-1.7.5.jar.bak

7、将master1的hbase环境传输到其他节点

$ for ip in `seq 2 5`;do scp -rpq /data1/usr/hbase-1.2.4 192.168.11.13$ip:/data1/usr;done

8、master1上启动Hbase(hadoop集群已启动)

$ cd /data1/usr/hbase-1.2.4/bin 

$ ./start-hbase.sh

9、验证

查看hbase是否在HDFS文件系统创建成功

$ /data1/usr/hadoop-2.7.3/bin/hadoop fs -ls / 

执行: bin/hbase shell 可以进入Hbase管理界面、

输入 status 查看状态

创建表

create 'test', 'cf'

显示表信息

list 'test'

表中插入数据

put 'test', 'row1', 'cf:a', 'value1'

put 'test', 'row2', 'cf:b', 'value2'

put 'test', 'row3', 'cf:c', 'value3'

查询表

scan 'test'

取一行数据

get 'test', 'row1'

失效表

disable 'test'

删除表

drop 'test'

浏览器输入http://master1:16010可以打开Hbase管理界面

http://192.168.11.131/master-status

10、启动thrift2

hbase-daemons.sh start thrift2

各节点用jps确认服务是否启动,一般启动失败的原因是配置有误。


网页题目:生产环境下hadoopHA集群及HbaseHA集群配置
本文网址:http://scyanting.com/article/pcegoj.html