OpenTSDB搭建过程(CDH环境,kerberos认证)
写在最前
为什么要写这篇文章:
目前在国内关于OpenTSDB的文章较少,在下因为最近工作需要需要搭建OpenTSDB找到一些文章,但是关于CDH环境的却很少,搭建的时候也遇到不少坑,所以为了避免后面来者避开这些坑,便想起去写这篇文章,好了废话不多说直接上干货。
0.环境说明
安装OpenTSDB需要依赖HBASE,HDFS,zookeeper环境。由于本文主要介绍OpenTSDB,所以如果未搭建HBASE,请先去搭建HBASE后,再回来看该篇文章。
OpenTSDB的环境搭建该文章中也写明了如何搭建HBASE,可以参考
CDH安装,可使用Cloudra Manager 安装
1.环境搭建
当时参考的是某位大佬的安装教程,附上链接OpenTSDB的环境搭建
在下把其中安装的步骤为大家粘过来并进行了其中步骤的一些优化还有一些坑,大家可以按照搭建
安装openTSDB集群
step 1下载openTSDB
地址如右:https://github.com/OpenTSDB/opentsdb/releases 下载tar.gz包。
step 2解压缩
tar -zxvf opentsdb-2.3.0.tar.gz -C /usr/local
step 3.开始编译opentsdb
进入解压后的opentsdb目录,因为直接build会报错,所以按照以下步骤
cd opentsdb-2.4.0/
mkdir build
cp -r third_party ./build
./build.sh
然后编译成功。【编译成功的标志是在openTSDB父目录下生成build文件夹,并且会生成一个jar包:tsdb-2.3.0.jar】
step 4:接着执行脚本
创建openTSDB所需要的表,这些命令均已写好,只需要执行相应脚本即可。
env COMPRESSION=NONE HBASE_HOME=/usr/local/hbase-1.4.0 ./src/create_table.sh
注意:上方HBASE_HOME,需要替换为你的HBASE安装目录
step 4.1 [踩坑] cdh的kerberos环境下可能会遇到的问题
step 4.1.1遇到权限问题,建表失败
解决办法:使用kinit认证具有hbase权限的,使用命令kinit命令
以下为在下使用的命令,仅供参考
kinit -kt /home/admin/keytab/hbase.keytab hbase/cdh02@EXAMPLE.COM
step 4.1.2 hbase中关于表 tsdb 创建失败
解决办法:手动创建tsdb表,依稀记得当时报错为 imput String ‘forever’
当时建表语句未保存,以下为新写的,按照create_table.sh文件编写的,去掉对TTL列的定义
先进入HBASE SHELL
hbase shell
在HBASE SHELL中执行建表语句
create 'tsdb',{NAME => 't', VERSIONS => 1, BLOOMFILTER => 'ROW', DATA_BLOCK_ENCODING => 'PREFIX_TREE' ,COMPRESSION => 'NONE'}
step 5:将openTSDB文件目录下的opentsdb.conf文件拷贝到./build目录下,
mv opentsdb.conf build/opentsdb.conf
opentsdb.conf配置内容如下【这里只列举出需要修改的配置项】:
# --------- NETWORK ----------
# The TCP port TSD should use for communications
# *** REQUIRED ***
tsd.network.port = 4242# ----------- HTTP -----------
# The location of static files for the HTTP GUI interface.
# *** REQUIRED ***
tsd.http.staticroot = ./staticroot
# Where TSD should write it's cache files to
# *** REQUIRED ***
tsd.http.cachedir = /root/openTSDB_temp# --------- CORE ----------
# Whether or not to automatically create UIDs for new metric types, default
# is False
tsd.core.auto_create_metrics = true
# Name of the HBase table where data points are stored, default is "tsdb"
tsd.storage.hbase.data_table = tsdb
# Path under which the znode for the -ROOT- region is located, default is "/hbase"
tsd.storage.hbase.zk_basedir = /hbase
# A comma separated list of Zookeeper hosts to connect to, with or without
# port specifiers, default is "localhost"
tsd.storage.hbase.zk_quorum = server4,server5,server6
注意1:其中tsd.storage.hbase.zk_quorum = server4,server5,server6 为你zookeeper的地址
注意2:如果不填写ip 填写cdh01之类的地址,请确保自己的 /etc/profile 存在正确的映射
step 5.1 [踩坑]opentsdb.conf中有关kerberos特殊配置
该步为cdh中hbase启动kerberos认证需要额外增加的配置
其中build/opentsdb.conf的文件配置增加
vim opentsdb.conf
#--------KERBEROS-----
hbase.security.auth.enable=true
hbase.security.authentication=kerberos
hbase.sasl.clientconfig=Client
hbase.kerberos.regionserver.principal=hbase/_HOST@EXAMPLE.COM
注意:其中的hbase.kerberos.regionserver.principal 配置为你的HBASE的principal
step 5.2 [踩坑]增加jaas认证文件
vim build/jaas/jaas.conf
jaas配置如下
Client {com.sun.security.auth.module.Krb5LoginModule requireduseKeyTab=trueuseTicketCache=falsekeyTab="/home/admin/keytab/admin.keytab"principal=admin@EXAMPLE.COM
};
注意1:其中的keyTab和principal 更改为你kerberos的keytab和parincipal
注意2:Client 这个名字一定要和opentsdb.conf 中hbase.sasl.clientconfig 的值一样
step 6.运行openTSDB
6.1 不带kerberos认证的执行命令:
./tsdb tsd
6.2 [踩坑]带kerberos认证的执行方法
JVMARGS="-Djava.security.auth.login.config=/data/opentsdb-2.4.0/build/jaas/jaas.conf -Dzookeeper.sasl.client=false" ./tsdb tsd &
注意: -Djava.security.auth.login.config 指定你刚编写的的jass.conf文件
step 7.运行之后,可以发现在当前窗口出现了很多的消息,这些便是启动openTSDB的日志消息。
如果启动不报错,基本部署已完成,可访问之前设置的端口出现以下页面就是成功部署
写在最后
以下出现的状况,我只是大胆猜测一下,大家仅供参考,如遇错误,可及时指正
有一些异常会出现,略微提一下
- 第一个启动报错: java.lang.IllegalStateException: Failed to get login context
2020-04-05 00:02:31,310 ERROR [AsyncHBase I/O Worker #2] RegionClient: Unexpected exception from downstream on [id: 0x03047585, /192.168.1.75:50542 => /192.168.1.75:60020]
java.lang.IllegalStateException: Failed to get login contextat org.hbase.async.auth.KerberosClientAuthProvider.<init>(KerberosClientAuthProvider.java:92) ~[asynchbase-1.8.2.jar:na]at org.hbase.async.SecureRpcHelper.initSecureClientProvider(SecureRpcHelper.java:139) ~[asynchbase-1.8.2.jar:na]at org.hbase.async.SecureRpcHelper.<init>(SecureRpcHelper.java:116) ~[asynchbase-1.8.2.jar:na]at org.hbase.async.SecureRpcHelper96.<init>(SecureRpcHelper96.java:65) ~[asynchbase-1.8.2.jar:na]at org.hbase.async.RegionClient.channelConnected(RegionClient.java:1113) ~[asynchbase-1.8.2.jar:na]at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:100) [netty-3.10.6.Final.jar:na]at org.hbase.async.RegionClient.handleUpstream(RegionClient.java:1230) ~[asynchbase-1.8.2.jar:na]at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) [netty-3.10.6.Final.jar:na]at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) [netty-3.10.6.Final.jar:na]at org.jboss.netty.channel.SimpleChannelHandler.channelConnected(SimpleChannelHandler.java:182) [netty-3.10.6.Final.jar:na]at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:118) [netty-3.10.6.Final.jar:na]at org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler.handleUpstream(IdleStateAwareChannelHandler.java:36) [netty-3.10.6.Final.jar:na]at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) [netty-3.10.6.Final.jar:na]at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) [netty-3.10.6.Final.jar:na]at org.jboss.netty.channel.SimpleChannelUpstreamHandler.channelConnected(SimpleChannelUpstreamHandler.java:191) [netty-3.10.6.Final.jar:na]at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:100) [netty-3.10.6.Final.jar:na]at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) [netty-3.10.6.Final.jar:na]at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) [netty-3.10.6.Final.jar:na]at org.hbase.async.HBaseClient$RegionClientPipeline.sendUpstream(HBaseClient.java:3857) [asynchbase-1.8.2.jar:na]at org.jboss.netty.channel.Channels.fireChannelConnected(Channels.java:227) [netty-3.10.6.Final.jar:na]at org.jboss.netty.channel.socket.nio.NioWorker$RegisterTask.run(NioWorker.java:162) [netty-3.10.6.Final.jar:na]at org.jboss.netty.channel.socket.nio.AbstractNioSelector.processTaskQueue(AbstractNioSelector.java:391) [netty-3.10.6.Final.jar:na]at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:315) [netty-3.10.6.Final.jar:na]at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89) [netty-3.10.6.Final.jar:na]at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) [netty-3.10.6.Final.jar:na]at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) [netty-3.10.6.Final.jar:na]at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) [netty-3.10.6.Final.jar:na]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_212]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_212]at java.lang.Thread.run(Thread.java:748) [na:1.8.0_212]
Caused by: javax.security.auth.login.LoginException: No LoginModules configured for Clientat javax.security.auth.login.LoginContext.init(LoginContext.java:264) ~[na:1.8.0_212]at javax.security.auth.login.LoginContext.<init>(LoginContext.java:417) ~[na:1.8.0_212]at org.hbase.async.auth.Login.login(Login.java:230) ~[asynchbase-1.8.2.jar:na]at org.hbase.async.auth.Login.<init>(Login.java:165) ~[asynchbase-1.8.2.jar:na]at org.hbase.async.auth.Login.initUserIfNeeded(Login.java:137) ~[asynchbase-1.8.2.jar:na]at org.hbase.async.auth.KerberosClientAuthProvider.<init>(KerberosClientAuthProvider.java:87) ~[asynchbase-1.8.2.jar:na]... 29 common frames omitted
60020 端口是RegionServer的端口,一般为kerberos的配置仍然不正确
2.Broken pipe的出现
关于Broken pipe 出现需要排查两个地方 :
2.1 Habse是否正常工作
可进入HBASE SHELL 命令,进行list命令的查看是否正常,如果没有报异常,可基本排除hbase本身的问题。
2.2 openTSDB的排查
2018-07-11 10:25:39,294 ERROR [AsyncHBase I/O Worker #10] RegionClient: Unexpected exception from downstream on [id: 0x0c16e2a5, /10.70.57.18:33426 => /10.70.56.253:60020]
java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[na:1.8.0_131]
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) ~[na:1.8.0_131]
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) ~[na:1.8.0_131]
at sun.nio.ch.IOUtil.write(IOUtil.java:51) ~[na:1.8.0_131]
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471) ~[na:1.8.0_131]
at org.jboss.netty.channel.socket.nio.SocketSendBufferPool$UnpooledSendBuffer.transferTo(SocketSendBufferPool.java:203) ~[netty-3.10.6.Final.jar:na]
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.write0(AbstractNioWorker.java:201) [netty-3.10.6.Final.jar:na]
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.writeFromUserCode(AbstractNioWorker.java:146) [netty-3.10.6.Final.jar:na]
at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.eventSunk(NioClientSocketPipelineSink.java:84) [netty-3.10.6.Final.jar:na]
at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendDownstream(DefaultChannelPipeline.java:779) [netty-3.10.6.Final.jar:na]
at org.jboss.netty.channel.SimpleChannelHandler.writeRequested(SimpleChannelHandler.java:292) [netty-3.10.6.Final.jar:na]
at org.jboss.netty.channel.SimpleChannelHandler.handleDownstream(SimpleChannelHandler.java:254) [netty-3.10.6.Final.jar:na]
at org.jboss.netty.channel.DefaultChannelPipeline.svendDownstream(DefaultChannelPipeline.java:591) [netty-3.10.6.Final.jar:na]
这种就是没有配置kerberos认证,重新配置openTSDB的认证
参考文档:https://blog.csdn.net/liu16659/java/article/details/81038756
OpenTSDB搭建过程(CDH环境,kerberos认证)相关推荐
- CDH 的Kerberos认证配置
2019独角兽企业重金招聘Python工程师标准>>> 最近因为项目需要,需要对用户权限做限制,最终选择了kerberos+sentry+hue模式来管理用户,但是这个kerbero ...
- CDH启用kerberos认证问题导致GSS initiate failed
问题描述:CDH启用Kerberos后使用beeline连接HiveServer2出错,错误信息如下: 解决方案: 先进入CM管理界面,停止hive 然后在管理->安全 界面点击Kerberos ...
- Ubuntu kylin环境下OpenGym + Roboschool搭建过程
Ubuntu kylin环境下OpenGym + Roboschool搭建过程 随着深度学习的不断发展,增强学习也焕发了第二春,以DQN,DDPG,A2C,A3C为代表的一系列深度增强学习算法应运而生 ...
- 【安装】Hadoop2.8.0搭建过程整理版
Hadoop搭建过程 前期环境搭建主要分为软件的安装与配置文件的配置,集成的东西越多,配置项也就越复杂. Hadoop集成了一个动物园,所以配置项也比较多,且每个版本之间会有少许差异. 安装的方式有很 ...
- CDH Kerberos 认证下Kafka 消费方式
集群Kerberos认证安装参考:https://datamining.blog.csdn.net/article/details/98480008 目录 环境: 配置 Java Producer 代 ...
- CDH kerberos 认证,安全认证
环境 centos 7.4 安装KDC服务 yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation 修改配置文件 ...
- CDH 6.2.0启用kerberos认证
1. 整体说明 集群主机角色划分(cdh6.2.0(续)) n76.aa-data.cn作为master节点,安装kerberos Server 其他节点作为slave节点,安装kerberos cl ...
- Windows 环境 python读需kerberos认证的hdfs
Windows 环境 python读需kerberos认证的hdfs 不喜欢废话,直接先上结论: Windows环境下python读kerberos认证的hdfs不支持,即使用anaconda中的也不 ...
- kerberos认证搭建安装
kerberos认证搭建安装 一.Kerberos简介 1.Kerberos 2.Kerberos认证流程 2.1客户端认证 2.2服务授权 2.3服务请求 3.kdc集群 3.1安装包 3.2术语 ...
最新文章
- 高通首次推出AI引擎 打包所有软硬件算力
- 【Python】 linecache模块读取文件
- pymysql的相关操作
- 后台执行UNIX/Linux命令和脚本的五种方法
- LeetCode 112路径总和-简单
- Java面试必备的集合源码详解,砥砺前行!
- 查看屏幕大小_疑似“iPhone 12” 的OLED屏幕组件泄露
- IBM MQ Explore使用
- webmail lite php,自建webmail网页客户端
- 等待队列设备[置顶] Linux设备驱动,等待队列
- win2003 iis上运行asp.net配置
- java web mvc spring_Java下Web MVC的领跑者:SpringMVC
- java socket 清理缓冲器_2021年Java全套面试题抢先看!中篇(更新中......)
- AKM项目轶事之GBS同事转入GDC
- 百度(高德、GG歌)离线地图开发环境搭建【离线地图开发源代码】
- PPT怎么修改母版背景
- 刘洪波《英文字根词源精讲》完整目录
- QQ看点模块思维导图
- 看完南京前11年房价,我哭了!今年实在太特么狠了
- RNA与DNA曾是一体?生命起源论或被颠覆