设为首页 收藏本站
查看: 1320|回复: 0

[经验分享] 生产环境下hadoop HA集群及Hbase HA集群配置

[复制链接]

尚未签到

发表于 2018-10-28 12:24:55 | 显示全部楼层 |阅读模式
  一、环境准备
  操作系统版本:
  centos7 64位
  hadoop版本:
  hadoop-2.7.3
  hbase版本:
  hbase-1.2.4
  1、机器及角色
IP角色192.168.11.131NamenodeDFSZKFailoverControllerResourceManagerJobhistoryHMasterQuorumPeerMain192.168.11.132NamenodeDFSZKFailoverControllerHMasterQuorumPeerMain192.168.11.133DatanodeNodeManagerJournalNodeHRegionServerQuorumPeerMain192.168.11.134DatanodeNodeManagerJournalNodeHRegionServerQuorumPeerMain192.168.11.135DatanodeNodeManagerJournalNodeHRegionServerQuorumPeerMain  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>  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 hudser:hduser /data1
  # chown hudser: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>  master1节点操作
  $ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@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>  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.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
  slave3
  slave4
  slave5
  同步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
  $ ./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
  ./sbin/hadoop-daemon.sh start namenode
  10、需要在master2(备节点)上执行数据同步
  ./bin/hdfs namenode –bootstrapStandby
  scp -r /data2/hadoop_data/hdfs/namenode hduser@mster2:/data2/hadoop_data/hdfs/
  11、在master2上启动namenode
  ./sbin/hadoop-daemon.sh start namenode
  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
  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
  ./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
  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确认服务是否启动,一般启动失败的原因是配置有误。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-627495-1-1.html 上篇帖子: 2018-07-07期 Hadoop本地运行模式配置 下篇帖子: 20180525早课记录18-Hadoop
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表