HBase运维篇 _ ZGC初体验——HBase1.4.8安装部署和测试
作者:互联网
HBase运维篇 | ZGC初体验——HBase1.4.8安装部署和测试
1. 摘要
接上篇文章——HBase源码篇 | ZGC初体验——OpenJdk 15编译HBase 1.4.8,在上篇文章中,我为大家分享了open jdk 15
编译hbase-1.4.8
的详细过程,并且也得到了最终可安装的tar.gz包。
那么,这个安装包是否可以直接在分布式环境中部署和正常使用呢?在今天的这篇文章里,将继续为大家分享,jdk15编译的HBase安装包在完全分布式环境下的部署和功能测试。关于HBase的安装流程,网上有很多优秀的文章可以直接拿来借鉴和使用,因此,这里只记录一些需要特别注意的地方。
2. 开始安装
2.1 准备工作
- 安装AdoptOpenJDK15,请自行下载centos7环境中的AdoptOpenJDK15安装包,安装后,先不要配置Java的环境变量
- 安装Hadoop,最好是2.7.4,但我测试使用的是hadoop2.7.2
- 用AdoptOpenJDK15编译好的hbase-1.4.8-bin.tar.gz
2.2 安装部署
HBase安装可以使用单独的jdk,而无需把hadoop和zookeeper等之类的基础组件也用jdk15编译一遍。
hbase-1.4.8-bin.tar.gz解压缩后,编辑其配置文件。
hbase-env.sh
该文件中需要重点修改的配置选项如下:
# 设置JDK的home
export JAVA_HOME=/usr/local/jdk15
# 修改HBASE_OPTS,默认的GC方式已不支持,需要修改为其他GC算法,不然HBase相关进程无法启动。这里使用的GC算法是ZGC --add-exports之类的配置不加的话,HMaster和RS进程也无法正常启动
export HBASE_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseZGC --add-exports=java.base/jdk.internal.access=ALL-UNNAMED --add-exports=java.base/jdk.internal=ALL-UNNAMED --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED --add-exports=java.base/sun.security.pkcs=ALL-UNNAMED --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/jdk.internal.misc=ALL-UNNAMED"
# 分别编辑MASTER和REGIONSERVER的JVM参数,为其开启ZGC
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Xmx1g -Xms1G -XX:+UnlockExperimentalVMOptions -XX:+UseZGC"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xmx2g -Xms2G -XX:+UnlockExperimentalVMOptions -XX:+UseZGC"
# 不使用HBase自带的zookeeper
export HBASE_MANAGES_ZK=false
# 请重点关注以上配置项,其他配置项可以按需进行调优配置
hbase-site.xml
该文件中需要重点关注的配置如下:
<property>
<name>hbase.rootdir</name>
<value>hdfs://leo/hbase148</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>是否是完全分布式</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node1,node2,node3</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase148</value>
</property>
请重点关注以上配置项,其他配置项可以按需进行配置,当然以上配置选项也可以按照你的集群情况自行配置。
上述配置完成之后,请移动Hadoop的两个配置文件hdfs-site.xml
和core-site.xml
到HBase安装目录的conf文件夹下。
backup-masters
和regionservers
两个配置文件分别用来配置HBase的备主节点和RS节点,请按需配置。
上述配置完成之后,把HBase的安装目录,分发到其他的HBase节点,所需的环境变量,请自行设置,然后使用start-hbase.sh
脚本启动各个节点的HBase进程。然后使用jps命令或访问HBase的web ui来检查HBase的进程是否正常启动。
3. 测试
运行hbase shell
,进入shell下,测试相关的命令,测试中可能会遇到如下异常,
修改方式如下图:
@max_width = Java::jline.Terminal.getTerminal().getTerminalWidth()
修改为
@max_width = Java.jline.TerminalFactory.get.getWidth
解决思路是,参考更高版本HBase的代码,如:hbase-2.2.3中hbase-shell模块相关rb文件的源码。
运行一些shell命令,是可以正常工作的,shell的功能测试通过后,再来测试提交hbase的MR任务,例如:RowCounter
hbase org.apache.hadoop.hbase.mapreduce.RowCounter leo_test
不能用新编译版本的hbase提交MR任务,因为,我们此版本中hbase相关的jar包是使用jdk15编译的,所以要在用jdk8版本编译的hbase-1.4.8目录中提交MR作业。
4. 补充一个编译时遇到的异常
修改代码后,重新对HBase源码进行编译,突然遇到如下异常。
这个异常说的是,我运行mvn命令时所依赖的jdk版本不满足我设置的最小java版本,是由项目pom文件中的这块配置控制的。
hadoop-profile-min-maven-min-java-banned-xerces
但实际上,我已经切换过了jdk,运行java -version
命令,显示的java版本已经是jdk15了。最终的解决方案是,运行mvn命令时,先运行如下命令:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home
# 然后再运行打包命令
mvn clean package -DskipTests -Dhadoop-two.version=2.7.4 assembly:single
5. 总结
以上内容记录了在分布式环境中,我们用jdk15编译的HBase安装包,在测试环境中部署和体验的过程,这个环节基本没有什么坑,HBase的功能完整可用,只是不太建议立马在生产环境中使用。
后续会继续测试,在此版本中开启了ZGC的HBase的性能表现,并与G1的性能表现做对比,验证GC算法的升级和优化是否有助于改善查询延时的毛刺现象。
6. 附件
AdoptOpenJDK15安装包和编译好的HBase安装包的百度网盘地址:
(hbase-1.4.8-bin.tar.gz中已经修复了hbase-shell的bug)
链接:https://pan.baidu.com/s/1jgP8QtNK6IXQnvwot2kHPg 密码:2li6
标签:HBase1.4,初体验,java,jdk,运维篇,配置,编译,hbase,HBase 来源: https://www.cnblogs.com/leojie/p/15023215.html