【Hbase】1.3.1版本安装
环境:
1核4G内存128G磁盘,三台机器同一个配置
192.168.242.131 192.168.242.132 192.168.242.133
—— Linux Centos7 x64 系统平台
—— JDK,基于Java开发的组件的运行环境
—— Hadoop, Hbase数据的存储层依赖HDFS
—— Zookeeper,监控协调
其他各种依赖:
sudo yum install -y net-tools sudo yum install -y vim sudo yum install -y wget sudo yum install -y lrzsz sudo yum install -y pcre pcre-devel sudo yum install -y zlib zlib-devel sudo yum install -y openssl openssl-devel sudo yum install -y unzip sudo yum install -y libtool sudo yum install -y gcc-c++ sudo yum install -y telnet sudo yum install -y tree sudo yum install -y nano sudo yum install -y psmisc sudo yum install -y rsync sudo yum install -y ntp
JDK版本直接采用yum安装
sudo yum install -y java-1.8.0-openjdk-devel.x86_64
Zookeeper版本没有限制,任意就行,安装参考:
https://www.cnblogs.com/mindzone/p/15468883.html
Hadoop 3版本和2版本部署有差异,这里单独再写2版本Hadoop的集群部署
Hbase版本要和Hadoop匹配,这是一个部署坑
Hbase 1.3.1 匹配 Hadoop 2.7.2 没啥问题
Hadoop 2.7.2 安装
1号机131下载压缩包
wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz
解压到指定目录
mkdir -p /opt/module tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
配置Hadoop和JDK的环境变量
vim /etc/profile
在尾部追加变量信息(其他机器也添加)
# HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-2.7.2 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin # JAVA_HOME 这里看自己的具体jdk版本,不要直接cv , 用 find / -name java 查找一下 export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64 export PATH=$PATH:$JAVA_HOME/bin
立即使变量生效:
source /etc/profile
然后测试变量设置是否有效
hadoop version
成功则会展示hadoop的信息
[root@localhost ~]# hadoop version Hadoop 2.7.2 Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r b165c4fe8a74265c792ce23f546c64604acf0e41 Compiled by jenkins on 2016-01-26T00:08Z Compiled with protoc 2.5.0 From source with checksum d0fda26633fa762bff87ec759ebe689c This command was run using /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-common-2.7.2.jar
备份配置文件:
# 配置文件备份 cd /opt/module/hadoop-2.7.2/etc/hadoop/ cp -r core-site.xml core-site.xml.bak cp -r hadoop-env.sh hadoop-env.sh.bak cp -r hdfs-site.xml hdfs-site.xml.bak cp -r mapred-env.sh mapred-env.sh.bak cp -r mapred-site.xml mapred-site.xml.bak cp -r yarn-env.sh yarn-env.sh.bak cp -r yarn-site.xml yarn-site.xml.bak
core-site.xml
声明主节点的地址
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>fs.defaultFSname> <value>hdfs://192.168.242.131:9000value> property> <property> <name>hadoop.tmp.dirname> <value>/opt/module/hadoop-2.7.2/data/tmpvalue> property> configuration>
hadoop-env.sh
只需要声明一下JDK位置
# The java implementation to use. # export JAVA_HOME=${JAVA_HOME} export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64
hdfs-site.xml
定义副本数量和辅助节点地址
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.replicationname> <value>3value> property> <property> <name>dfs.namenode.secondary.http-addressname> <value>192.168.242.133:50090value> property> configuration>
mapred-env.sh
声明JDK路径
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64
marpred-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>mapreduce.framework.namename> <value>yarnvalue> property> configuration>
yarn-env.sh可以不改,脚本直接获取了$JAVA_HOME
yarn-site.xml
指定资源管理器地址
<?xml version="1.0"?> <configuration> <property> <name>yarn.nodemanager.aux-servicesname> <value>mapreduce_shufflevalue> property> <property> <name>yarn.resourcemanager.hostnamename> <value>192.168.242.132value> property> configuration>
配置集群节点地址
vim /opt/module/hadoop-2.7.2/etc/hadoop/slaves
写上所有机器地址,但是不要多空格空行
192.168.242.131 192.168.242.132 192.168.242.133
然后把Hadoop分发到剩余的机器
# xsync脚本 xsync /opt/module/hadoop-2.7.2 # 没有xsync脚本, 用scp拷贝 scp /opt/module/hadoop-2.7.2 root@192.168.242.132:/opt/module/ scp /opt/module/hadoop-2.7.2 root@192.168.242.133:/opt/module/
首次启动需要对HDFS进行格式化操作
hdfs namenode -format
如果需要再次格式化,先清空data目录的数据
rm -rf /opt/module/hadoop-2.7.2/data hdfs namenode -format
集群部署完成!
Hadoop集群启动:
# 1号机启动 $HADOOP_HOME/sbin/start-dfs.sh # 2号机启动 $HADOOP_HOME/sbin/start-yarn.sh
1号机执行信息:
[root@192 ~]# $HADOOP_HOME/sbin/start-dfs.sh Starting namenodes on [192.168.242.131] 192.168.242.131: starting namenode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-root-namenode-192.168.242.131.out 192.168.242.131: starting datanode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-root-datanode-192.168.242.131.out 192.168.242.133: starting datanode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-root-datanode-192.168.242.133.out 192.168.242.132: starting datanode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-root-datanode-192.168.242.132.out Starting secondary namenodes [192.168.242.133] 192.168.242.133: starting secondarynamenode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-root-secondarynamenode-192.168.242.133.out [root@192 ~]#
2号机执行信息:
[root@192 ~]# $HADOOP_HOME/sbin/start-yarn.sh starting yarn daemons starting resourcemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-root-resourcemanager-192.168.242.132.out 192.168.242.133: starting nodemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-root-nodemanager-192.168.242.133.out 192.168.242.131: starting nodemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-root-nodemanager-192.168.242.131.out 192.168.242.132: starting nodemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-root-nodemanager-192.168.242.132.out [root@192 ~]#
Zookeeper保持运行状态:
[root@192 ~]# zk-cluster status ---------- zookeeper 192.168.242.131 状态 ------------ /usr/bin/java ZooKeeper JMX enabled by default Using config: /opt/module/apache-zookeeper-3.7.0/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: follower ---------- zookeeper 192.168.242.132 状态 ------------ /usr/bin/java ZooKeeper JMX enabled by default Using config: /opt/module/apache-zookeeper-3.7.0/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: leader ---------- zookeeper 192.168.242.133 状态 ------------ /usr/bin/java ZooKeeper JMX enabled by default Using config: /opt/module/apache-zookeeper-3.7.0/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: follower [root@192 ~]#
Hbase集群安装:
1号机下载压缩包:
wget https://dlcdn.apache.org/hbase/stable/hbase-2.4.9-bin.tar.gz
解包到指定目录
tar -zxvf hbase-2.4.9-bin.tar.gz -C /opt/module/
备份配置文件
cp -r /opt/module/hbase-2.4.9/conf/hbase-env.sh /opt/module/hbase-2.4.9/conf/hbase-env.sh.bak cp -r /opt/module/hbase-2.4.9/conf/hbase-site.xml /opt/module/hbase-2.4.9/conf/hbase-site.xml.bak cp -r /opt/module/hbase-2.4.9/conf/regionservers /opt/module/hbase-2.4.9/conf/regionservers.bak
hbase-env.sh
追加环境变量
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64 export HBASE_MANAGES_ZK=false
hbase-site.xml
1、注意rootdir和hadoop的HDFS端口一致,(本文Ctrl + F查找9000)
2、Zookeeper的datadir写出自己设定的路径,否则Hbase的shell执行时找不到zk
<property> <name>hbase.rootdirname> <value>hdfs://192.168.242.131:9000/HBasevalue> property> <property> <name>hbase.cluster.distributedname> <value>truevalue> property> <property> <name>hbase.master.portname> <value>16000value> property> <property> <name>hbase.zookeeper.quorumname> <value>192.168.242.131,192.168.242.132,192.168.242.133value> property> <property> <name>hbase.zookeeper.property.dataDirname> <value>/opt/module/apache-zookeeper-3.7.0/zk-datavalue> property>
regionservers
不要空格和空行
192.168.242.131 192.168.242.132 192.168.242.133
软链接Hadoop的配置文件
ln -s /opt/module/hadoop-3.3.1/etc/hadoop/core-site.xml /opt/module/hbase-2.4.9/conf/core-site.xml ln -s /opt/module/hadoop-3.3.1/etc/hadoop/hdfs-site.xml /opt/module/hbase-2.4.9/conf/hdfs-site.xml
Hbase到这,1号机的装完了,然后分发到剩下的机器中
# xsync脚本 xsync /opt/module/hbase-1.3.1 # 没有xsync脚本, 用scp拷贝 scp /opt/module/hbase-1.3.1 root@192.168.242.132:/opt/module/ scp /opt/module/hbase-1.3.1 root@192.168.242.133:/opt/module/
服务器时间同步处理:
这个问题在Hbase shell查看status状态时会报错
错误描述:主节点未初始化异常,不影响使用,但是原因是因为集群的时间不一致导致
参考:
https://blog.csdn.net/renzhewudi77/article/details/86301395
解决办法是同步时间一致
以1号机作为时间统一标准,做时间服务器
安装ntp服务(不管没有有都执行一次)
sudo yum install -y ntp
首先编辑1号机的ntp配置
vim /etc/ntp.conf
主要内容:
# 改成自己网段的,例如我的网段是242 # (授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间) # restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap为 restrict 192.168.242.0 mask 255.255.255.0 nomodify notrap # 注释下面的信息 (集群在局域网中,不使用其他互联网上的时间) 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 为这样: # 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 # 备用本地时间提供同步 (当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步) # Enable writing of statistics records. #statistics clockstats cryptostats loopstats peerstats server 127.127.1.0 fudge 127.127.1.0 stratum 10
系统ntp配置修改
vim /etc/sysconfig/ntpd
追加配置项:
# 增加内容 #(让硬件时间与系统时间一起同步) SYNC_HWCLOCK=yes
剩下是ntp的运行处理
# 查看ntp状态
service ntpd status
# 服务启动
service ntpd start
# 开机自启动
chkconfig ntpd on
其他机器只需要设定定时任务和时间服务器进行同步即可
# 编写定时任务(非1号机的机器执行,1号机作为时间服务器) crontab -e
# 任务编辑脚本中写: # (其他机器配置10分钟与时间服务器同步一次) */10 * * * * /usr/sbin/ntpdate 192.168.242.131
启动与停止Hbase集群
/opt/module/hbase-2.4.9/bin/start-hbase.sh /opt/module/hbase-2.4.9/bin/stop-hbase.sh
启动
[root@192 ~]# /opt/module/hbase-1.3.1/bin/start-hbase.sh OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N starting master, logging to /opt/module/hbase-1.3.1/bin/../logs/hbase-root-master-192.168.242.131.out OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0 OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0 OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N 192.168.242.133: starting regionserver, logging to /opt/module/hbase-1.3.1/bin/../logs/hbase-root-regionserver-192.168.242.133.out 192.168.242.132: starting regionserver, logging to /opt/module/hbase-1.3.1/bin/../logs/hbase-root-regionserver-192.168.242.132.out 192.168.242.131: starting regionserver, logging to /opt/module/hbase-1.3.1/bin/../logs/hbase-root-regionserver-192.168.242.131.out 192.168.242.133: OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0 192.168.242.133: OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0 192.168.242.133: OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N 192.168.242.132: OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0 192.168.242.132: OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0 192.168.242.132: OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N 192.168.242.131: OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0 192.168.242.131: OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0 192.168.242.131: OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N [root@192 ~]#
访问Hbase的Shell检查是否正常运行
# 访问 /opt/module/hbase-2.4.9/bin/hbase shell
查看状态
status
输出信息:
hbase(main):002:0> status 1 active master, 0 backup masters, 3 servers, 1 dead, 1.0000 average load
访问地址查看:
http://192.168.242.131:16010
Hbase踩坑:
更换了主机名称时,一定要记得在host做相应的映射配置
每台机器设置了映射 # 1号机 hostnamectl set-hostname centos7-01 # 2号机 hostnamectl set-hostname centos7-02 # 3号机 hostnamectl set-hostname centos7-03
每台机器都要在hosts文件配置映射
vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.242.131 centos7-01 192.168.242.132 centos7-02 192.168.242.133 centos7-03
否则Hbase集群会因为ZK找不到节点,通信失败而挂掉集群下的所有服务