Hadoop集群(三) Hbase搭建

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介:

前面已经完成Zookeeper和HDFS的安装,本文会详细介绍Hbase的安装步骤。以及安装过程中遇到问题的汇总。

系列文章:

Hadoop集群(一) Zookeeper搭建

Hadoop集群(二) HDFS搭建

Hadoop集群(四) Hadoop升级


下面开始Hbase的安装。

Hbase的服务器规划

1
2
3
192.168.67.101 c6701  --Master + regionserver
192.168.67.102 c6702  --Master(standby)+regionserver
192.168.67.103 c6703  --regionserver

---在c6701上安装Hbase

1. 创建hbase用户,及创建相关目录

1
2
3
4
5
6
7
8
su - root
useradd hbase
echo  "hbase:hbase"  | chpasswd
mkdir -p /data/zookeeper
mkdir -p /data/hbase/tmp
mkdir -p /data/hbase/logs
chown -R hbase:hbase /data/hbase
chown -R a+rx /home/hdfs      <<<<<<<<<<<<<让hadoop目录,其他人可以用读和执行 --很重要hbase需要访问

2. 解压软件

1
2
3
su - hbase
cd /tmp/software
tar -zxvf hbase-1.1.3.tar.gz -C /home/hbase/

3. 设置hbase-site.xml的参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[hbase@c6701 conf]$ more hbase-site.xml 
<configuration>
         <property>
                 < name >hbase.tmp.dir</ name >
                 <value>/data/hbase/tmp</value>
         </property>
         <property>
                 < name >hbase.rootdir</ name >
                 <value>hdfs://ns/hbase</value>  <<<<<<<<<<<<<<<<<这里要注意,ns是namenode的名字,Hbase可以访问很多HDFS,在这里标注namenode,才是指定访问这个namenode,实际在hdfs看到是/hbase的目录,不会看到ns的。
         </property>
         <property>
                 < name >hbase.cluster.distributed</ name >
                 <value> true </value>
         </property>
         <property>
                 < name >hbase.master</ name >
                 <value>60000</value>
         </property>
         <property>
                 < name >hbase.zookeeper.quorum</ name >
                 <value>c6701,c6702,c6703</value>
         </property>
         <property>
                 < name >hbase.zookeeper.property.clientPort</ name >
                 <value>2181</value>
         </property>
         <property>
                 < name >hbase.zookeeper.property.dataDir</ name >
                 <value>/data/zookeeper</value>
         </property>
</configuration>

4. 设置hbase-env.sh的参数

1
2
3
4
5
6
7
8
9
10
11
12
13
[hbase@c6701 conf]$ cat hbase-env.sh |grep -v  "^#"
export JAVA_HOME=/usr/ local /jdk1.8.0_144
export HBASE_CLASSPATH=$HADOOP_HOME/etc/hadoop/
export HBASE_HEAPSIZE=500M
export HBASE_OPTS= "-XX:+UseConcMarkSweepGC"
export HBASE_REGIONSERVER_OPTS= "-Xmx1g -Xms400m -Xmn128m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70"
export HBASE_MASTER_OPTS= "$HBASE_MASTER_OPTS  -Xmx1g -Xms400m -XX:PermSize=128m -XX:MaxPermSize=128m"
export HBASE_REGIONSERVER_OPTS= "$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
export HBASE_LOG_DIR=/data/hbase/logs
export HBASE_PID_DIR=/data/hbase/hadoopPidDir
export HBASE_MANAGES_ZK= true
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HBASE_HOME/lib/:/usr/lib64/
export HBASE_LIBRARY_PATH=$HBASE_LIBRARY_PATH:$HBASE_HOME/lib/:/usr/lib64/

5. 注意一下内存设置,由于是测试环境,设置过大,导致内存不足,无法启动问题

1
2
export HBASE_REGIONSERVER_OPTS= "-Xmx1g -Xms400m -Xmn128m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70"
export HBASE_MASTER_OPTS= "$HBASE_MASTER_OPTS  -Xmx1g -Xms400m -XX:PermSize=128m -XX:MaxPermSize=128m"

内存不足的错误

1
2
3
4
5
6
7
8
9
10
[hbase@c6701 bin]$ ./hbase-daemon.sh start master
starting master, logging  to  /data/hbase/logs/hbase-hbase-master-c6701.python279.org. out
Java HotSpot(TM) 64- Bit  Server VM warning: ignoring  option  PermSize=128m; support was removed  in  8.0
Java HotSpot(TM) 64- Bit  Server VM warning: ignoring  option  MaxPermSize=128m; support was removed  in  8.0
Java HotSpot(TM) 64- Bit  Server VM warning: INFO: os::commit_memory(0x00000006c5330000, 2060255232, 0) failed; error= 'Cannot allocate memory'  (errno=12)
#
# There  is  insufficient memory  for  the Java Runtime Environment  to  continue .
# Native memory allocation (mmap) failed  to  map 2060255232 bytes  for  committing reserved memory.
# An error report file  with  more information  is  saved  as :
# /home/hbase/hbase-1.1.3/bin/hs_err_pid7507.log

6. 增加hadoop的参数到/etc/profile中,后面hbase运行,需要知道hadoop_home

1
2
3
4
5
6
7
8
9
10
11
12
export JAVA_HOME=/usr/ local /jdk1.8.0_144
export JRE_HOME=/usr/ local /jdk1.8.0_144/jre
export PATH=$JAVA_HOME/bin:$PATH:/home/hbase/hbase-1.1.3/bin
export HADOOP_HOME=/home/hdfs/hadoop-2.6.0-EDH-0u2
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export  HADOOP_OPTS= "-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

---安装c6702的hbase

7. 创建hbase用户 

1
ssh c6702  "useradd hbase;echo " hbase:hbase " | chpasswd"

8. 为hbase用户ssh免密

1
ssh-copy-id  hbase@c6702

9. 拷贝软件,创建目录,解压软件

1
2
3
4
scp -r /tmp/software/hbase-1.1.3.tar.gz root@c6702:/tmp/software/.
ssh c6702  "chmod 777 /tmp/software/*;mkdir -p /data/zookeeper;mkdir -p /data/hbase/tmp;mkdir -p /data/hbase/logs;chown -R hbase:hbase /data/hbase"
ssh c6702  "chmod -R a+rx /home/hdfs"
ssh hbase@c6702  "tar -zxvf /tmp/software/hbase-1.1.3.tar.gz -C /home/hbase"

10.复制配置文件

1
2
3
scp -r /etc/profile root@c6702:/etc/profile
scp -r /home/hbase/hbase-1.1.3/conf/hbase-site.xml hbase@c6702:/home/hbase/hbase-1.1.3/conf/.
scp -r /home/hbase/hbase-1.1.3/conf/hbase-env.sh hbase@c6702:/home/hbase/hbase-1.1.3/conf/.

---安装c6703的hbase

8. 创建hbase用户 

1
ssh c6703  "useradd hbase;echo " hbase:hbase " | chpasswd"

9. 为hbase用户ssh免密

1
ssh-copy-id  hbase@c6703

10. 拷贝软件,创建目录,解压软件

1
2
3
4
scp -r /tmp/software/hbase-1.1.3.tar.gz root@c6703:/tmp/software/.
ssh c6703  "chmod 777 /tmp/software/*;mkdir -p /data/zookeeper;mkdir -p /data/hbase/tmp;mkdir -p /data/hbase/logs;chown -R hbase:hbase /data/hbase"
ssh c6703  "chmod -R a+rx /home/hdfs"
ssh hbase@c6703  "tar -zxvf /tmp/software/hbase-1.1.3.tar.gz -C /home/hbase"

11. 复制配置文件

1
2
3
scp -r /etc/profile root@c6703:/etc/profile
scp -r /home/hbase/hbase-1.1.3/conf/hbase-site.xml hbase@c6703:/home/hbase/hbase-1.1.3/conf/.
scp -r /home/hbase/hbase-1.1.3/conf/hbase-env.sh hbase@c6703:/home/hbase/hbase-1.1.3/conf/.

12. 启动Hbase master(在c6701和c6702)

1
2
hbase-daemon.sh start master
ssh -t -q c6702  sudo su -l hbase -c  "/usr/local/hadoop/hbase-release/bin/hbase-daemon.sh\ start\ master"

13. 启动Hbase regionserver(在c6701和c6702和c6703)

1
2
3
hbase-daemon.sh start regionserver
ssh -t -q c6702  sudo su -l hbase -c  "/usr/local/hadoop/hbase-release/bin/hbase-daemon.sh\ start\ regionserver"
ssh -t -q c6703  sudo su -l hbase -c  "/usr/local/hadoop/hbase-release/bin/hbase-daemon.sh\ start\ regionserver"

HBASE安装过程,问题汇总

1. 首先Hbase-site.xml设置错误,ns是namenode的名字,Hbase可以访问很多HDFS,在这里标注namenode,才是指定访问这个namenode,实际在hdfs看到是/hbase的目录,不会看到ns的。

1
2
  < name >hbase.rootdir</ name >
<value>hdfs://ns/hbase</value>  <<<<<<<<<<<<<<<<<这里要注意

2.通过hbase访问hdfs遇到问题,虽然也可以对hdfs操作,但是有warning

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@c6701 home]# su - hbase
$ hdfs dfs -mkdir /hbase
$ hdfs dfs -ls /
Found 1 items
drwxrwx ---   - hdfs hadoop          0 2017-10-25 10:18 /hbase
权限不对,需要hbase是owner才可以让hbase正常访问hdfs路径
$ hadoop fs -chown hbase:hbase /hbase
$ hdfs dfs -ls /
Found 1 items
drwxrwx ---   - hbase hbase          0 2017-10-25 10:18 /hbase
已经修改成功
[hbase@c6701 ~]$ hdfs dfs -ls /hbase/test
17/09/27 07:45:59 WARN util.NativeCodeLoader: Unable  to  load  native-hadoop library  for  your platform... using builtin-java classes  where  applicable

最后注释掉/etc/profile中的CLASSPATH=解决的这个问题

1
2
3
4
export JAVA_HOME=/usr/ local /jdk1.8.0_144
export JRE_HOME=/usr/ local /jdk1.8.0_144/jre
#export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH:/home/hbase/hbase-1.1.3/bin

3. 启动Hbase的时候,还遇到权限问题,无法找到hadoop。首先通过hbase用户检查hadoop访问权限

1
2
su - hbase
/home/hdfs/hadoop-2.6.0-EDH-0u2/bin/hadoop version

如果权限有问题,需要增加hbase执行hadoop文件的权限


4. 启动过程中,遇到错误,是由于/home/hbase/hbase-1.1.3/lib/原有的一些jar包版本与hadoop不同,进而影响,删除即可。hbase会从hadoop中读取jar包

1
2
3
4
5
6
7
8
9
10
11
[hbase@c6702 ~]$ hbase-daemon.sh start regionserver
starting regionserver, logging  to  /data/hbase/logs/hbase-hbase-regionserver-c6702.python279.org. out
Java HotSpot(TM) 64- Bit  Server VM warning: ignoring  option  PermSize=128m; support was removed  in  8.0
Java HotSpot(TM) 64- Bit  Server VM warning: ignoring  option  MaxPermSize=128m; support was removed  in  8.0
SLF4J: Class path  contains  multiple SLF4J bindings.
SLF4J: Found binding  in  [jar:file:/home/hbase/hbase-1.1.3/lib/kylin-jdbc-1.5.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding  in  [jar:file:/home/hbase/hbase-1.1.3/lib/kylin-job-1.5.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding  in  [jar:file:/home/hbase/hbase-1.1.3/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding  in  [jar:file:/home/hdfs/hadoop-2.6.0-EDH-0u2/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings  for  an explanation.
SLF4J: Actual binding  is  of  type [org.slf4j.impl.Log4jLoggerFactory]

至此Zookeeper+HDFS+Hbase安装全部完成,前面还是比较顺利的,但是在Hbase安装的过程中,由于与Hadoop的衔接上,出现一些问题,耗费一些时间分析解决。

后续会继续测试,hadoop升级的过程。










本文转自 hsbxxl 51CTO博客,原文链接:http://blog.51cto.com/hsbxxl/1971501,如需转载请自行联系原作者

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
10天前
|
分布式计算 Java Hadoop
java使用hbase、hadoop报错举例
java使用hbase、hadoop报错举例
34 3
|
2月前
|
存储 分布式计算 资源调度
Hadoop入门基础(三):如何巧妙划分Hadoop集群,全面提升数据处理性能?
Hadoop入门基础(三):如何巧妙划分Hadoop集群,全面提升数据处理性能?
|
1月前
|
分布式计算 Hadoop Devops
Hadoop集群配置https实战案例
本文提供了一个实战案例,详细介绍了如何在Hadoop集群中配置HTTPS,包括生成私钥和证书文件、配置keystore和truststore、修改hdfs-site.xml和ssl-client.xml文件,以及重启Hadoop集群的步骤,并提供了一些常见问题的故障排除方法。
46 3
Hadoop集群配置https实战案例
|
10天前
|
分布式计算 Hadoop Java
Hadoop集群搭建,基于3.3.4hadoop和centos8【图文教程-从零开始搭建Hadoop集群】,常见问题解决
本文是一份详细的Hadoop集群搭建指南,基于Hadoop 3.3.4版本和CentOS 8操作系统。文章内容包括虚拟机创建、网络配置、Java与Hadoop环境搭建、克隆虚拟机、SSH免密登录设置、格式化NameNode、启动Hadoop集群以及通过UI界面查看Hadoop运行状态。同时,还提供了常见问题的解决方案。
Hadoop集群搭建,基于3.3.4hadoop和centos8【图文教程-从零开始搭建Hadoop集群】,常见问题解决
|
1月前
|
机器学习/深度学习 分布式计算 安全
Hadoop集群常见报错汇总
这篇博客总结了Hadoop集群中可能遇到的各种常见错误,包括Kerberos认证问题、配置错误、权限问题等,并为每个问题提供了详细的错误复现、原因分析以及相应的解决方案。
51 1
Hadoop集群常见报错汇总
|
1月前
|
资源调度 分布式计算 运维
Hadoop集群资源管理篇-资源调度器
详细介绍了Hadoop集群资源管理中的资源调度器,包括资源分配的概念、大数据运维工程师如何管理集群工作负载、资源调度器的背景、Hadoop提供的FIFO、容量调度器和公平调度器三种资源调度器的概述以及它们之间的对比。
74 4
|
1月前
|
分布式计算 监控 Hadoop
监控Hadoop集群实战篇
介绍了监控Hadoop集群的方法,包括监控Linux服务器、Hadoop指标、使用Ganglia监控Hadoop集群、Hadoop日志记录、通过Hadoop的Web UI进行监控以及其他Hadoop组件的监控,并提供了相关监控工具和资源的推荐阅读链接。
50 2
|
2月前
|
机器学习/深度学习 存储 分布式计算
Hadoop高可用集群搭建
Hadoop高可用集群搭建
|
2月前
|
存储 分布式计算 负载均衡
|
2月前
|
存储 分布式计算 资源调度
Hadoop集群的扩展性与容错能力
【8月更文第28天】Hadoop 是一种用于处理和存储大规模数据集的开源软件框架。它由两个核心组件构成:Hadoop 分布式文件系统 (HDFS) 和 MapReduce 计算框架。Hadoop 的设计考虑了可扩展性和容错性,使其成为大规模数据处理的理想选择。
51 0
下一篇
无影云桌面