一分钟ECS上搭建云HBase Thriftserver

简介: 介绍ecs部署thriftserver流程

​ 这里详细的介绍下客户自己搭建thriftserver的流程以及步骤;通过一步步的演示达到分钟级别在ecs上自构建Thriftserver流程;Thrfitserver是接收各种语言的client的请求,可以是:java/c++/php/python and so on;thriftserver接收客户端请求,然后等于做一层proxy机制给HBbase server 发送请求,然后等待响应给client;

​ 一:搭建前我们需要确定好几个需要的东西:

​ 1.jdk(java运行环境,因为Thriftserve是java写的);这里以1.8版本为例子;如何部署java环境谷歌一坨资料;这里不在赘述;

     [root@xxxxx apps]# java -version

    java version "1.8.0_102"

    OpenJDK Runtime Environment (Alibaba 8.2.4fp1) (build 1.8.0102-b8)

    OpenJDK 64-Bit Server VM (Alibaba 8.2.4_fp1) (build 25.102-b8, mixed mode)

​ 2.hbase的安装包;可以从阿里云hbase的官网下载,下载的参考指南是这里(当然也可以从hbase 官网下载bin包)。下载后ls -l 下显示:

[root@xxxxx apps]#ls -l 
    drwxr-xr-x 5 hbase hbase      4096 Oct  9 14:58 bin
    -rw-r--r-- 1 hbase hbase    165450 Aug  8 20:45 CHANGES.txt
    drwxr-xr-x 2 hbase hbase      4096 Sep  6 17:47 conf
    drwxr-xr-x 7 hbase hbase      4096 Sep  6 17:47 hbase-webapps
    -rw-r--r-- 1 hbase hbase       261 Aug  8 20:45 LEGAL
    drwxr-xr-x 4 root  root      16384 Sep 26 14:47 lib
    -rw-r--r-- 1 hbase hbase    129225 Aug  8 20:45 LICENSE.txt
    -rw-r--r-- 1 hbase hbase     49093 Aug  8 20:45 NOTICE.txt
    drwxrwxr-x 2 hbase hbase      4096 Oct 23 14:41 pids
    -rw-r--r-- 1 hbase hbase      1477 Aug  8 20:45 README.txt

​ 3.在云hbase的白名单目录里面配置上部署ecs的机器的ip;

DingTalk20171023233710

​ 有上述2个东西以后,基本上我们就可以开始着手部署hbase 的thriftserver了,但是这里接下来需要有几点东西需要说明下,thriftserver实际上部署的话,一台ecs就是一个单节点,那么可能存在如果部署一台ecs的话,所有的请求打到这台ecs,可能整个集群的性能瓶颈卡在这个节点,此外这台机器可用性会影响整个集群的可用性。

二:部署的模式也有大概几种:

​ 1.集群模式:
de5eb77c70c1c4e0bcdaa6f731c78b4aef4813a5

​ 把thriftserver部署为一个集群,前段的client的业务请求,在挂一个slb或者业务自己写请求的路由策略,都是ok的,后端请求落到thriftserver集群,集群在做转发。集群的部署方式实际上就是:单独抽几个ecs机器,每一个机器只需要部署单节点thriftserver(参考下面单节点thriftserver部署),集群内的thriftserver对于client的请求处理(处理哪一条请求)由SLB做路由或者客户可以自己写代码实现路由规则,比如做key的模余哈希。

​ 这是最常见的模式,集群模式中的thrift建议不要和RS或者DN混部署。并且如果你使用集群模式的部署方案,你的client端不要去维护长连接。因为如果你维护一个长连接,负载均衡就会失效,如果thrift集群重启,大部分连接会连上第一个起来的thrfit server。

​ 2.本地模式:
31f3745fea2bf7dc5b281a2847be49dc883f111b

​ 每一个用户跑程序的代码那台机器可以顺便部署一个thriftserver,那个thriftserver 处理本机器的进程请求即可。实际上和上述的集群模式是一种简化。复用了客户端的ecs ,节省了开销。

​ 本地模式就是在每个客户机上起一个client,这个客户机独享一个thrift。优点是部署简单,网络开销少。并且这种模式可以使用长连接,自己维护TTransport池。对于持续的写入或者读取,效果要比短连接好很多。HBase IPC本身也是维护一个长连接。缺点是,可靠性略差,如果thrift server挂了的话。但本身如果是多Client,其实也无所谓。

​ 总结:我们的客户case 中2种做法都有的,具体哪一种基于客户的业务预算以及场景来参考;

三:单节点的thriftserver部署:

​ 1.配置处理:

​ 在启动thriftservr之前,我们需要处理下一些相关的配置,需要处理的配置文件有:主要是在hbase的bin的tar包解压下面的conf的hbase-site.xml/hbase-env.sh:

​ 1.1.hbase-site.xml

​ 这个配置文件里面可以添加最基本的访问hbase的东西:zk的地址:

 <configuration>
 <property>
     <name>hbase.zookeeper.quorum</name>
     <value>zkip1:port,zkip2:port,zkip3:port</value>
 </property>
 </configuration>

当然上述东西里面你可以添加别的选项。比如我感觉thriftserver本地的线程少了我可以加一下:

<property>
         <name>hbase.thrift.maxWorkerThreads</name>
         <value>200</value>
     </property>

​ 可以配置的参数有(大致列举):

hbase.thrift.minWorkerThreads:thriftserver端最小线程池线程数;
hbase.thrift.maxWorkerThreads:最大线程数
hbase.thrift.maxQueuedRequests:thriftser排队队列里面最大允许的排队数;
hbase.thrift.threadKeepAliveTimeSec:thrift线程池线程活的最长时间
hbase.regionserver.thrift.compact:thriftserver使用compact协议传输(谷歌了解thrift协议细节);

1.2.hbase-env.sh

export HBASE_LOG_DIR="thriftserver打的log的目录"
export JVM_OPTS="-XX:+UseConcMarkSweepGC -XX:+UnlockDiagnosticVMOptions -XX:+BlockOffsetArrayUseUnallocatedBlock" #使用的是cms gc,当然这里可以使用别的gc算法
export JVM_OPTS="$JVM_OPTS -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75" #cmsgc的相关算法的默认配置
export JVM_OPTS="$JVM_OPTS -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps" #标志打gc log
export HBASE_THRIFT_OPTS="-Xms4096m -Xmx4096m" # 配置的gc的堆上内存大小,可以基于业务自己有的ecs机器配置
export HBASE_THRIFT_OPTS="$HBASE_THRIFT_OPTS $JVM_OPTS -XX:ErrorFile=$HBASE_LOG_DIR/hs_err.log -Xloggc:$HBASE_LOG_DIR/gc-thrift-`date +%Y%m%d-%H-%M`.log" #thrift serv log的格式

​ 这里需要明确几点:gc的算法可以配置不同种,jdk1.8以后g1 gc实际上算是比较成熟,也有生产环境使用:配置g1 gc参考这里,以及详细的cms 与g1的区别;对于cms的话,一般默认上述数据配置(除了堆内存)还是可以的。具体cms的调优也可以参考网上细节;

​ 对于堆内存的大小配置建议:

​ 1.2.1:一般使用thfrift的话,主要是使用thriftserver做请求处理,那么压力是全打在thriftserver的,那么对于如果业务请求大的话,且资源允许的话,还是希望给与thriftserver较多的内存资源,一个客户的case 是:集群模式部署thriftserver,单条请求KB级别,大概4台ecs 做业务请求,ecs的物理配置是4core 8g,thriftserver配置4G内存。如果ecs全部是用于业务请求thriftserver还是希望足够多,如果是4G ecs,那么给2G给thriftserver也是有必要的。

​ 1.2.2:如果请求压力过大,我们建议调低cms的CMSInitiatingOccupancyFraction阈值,比如到65的样子,此外,希望可以限制put/get的数据量,单条put入的数据值希望是不要不可控,这样给与thriftserver的压力也是很大的。oom风险较大。

1.3.启动

​ 启动的流程很简单,到bin目录下:执行下

​ sh hbase-deamon.sh start thrift (这里需要你自己明确启动的thrift的版本)

​ 完成以后会有log输出,如果ok 执行jps 或者是ps aux|grep ThriftServer 有thriftserver进程表示ok;

root   xxx   xxx   /usr/java/jdk1.8.0_131/bin/java -Dproc_thrift -Xmx4G -XX:+UseConcMarkSweepGC -Xms4096m -Xmx4096m -XX:+UseConcMarkSweepGC -XX:+UnlockDiagnosticVMOptions -XX:+BlockOffsetArrayUseUnallocatedBlock -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:ErrorFile=/xxx/logs/hs_err.log -Xloggc:xx -Dhbase.log.dir=/xxx/logs -Dhbase.log.file=xxx.log -Dhbase.home.dir=/xxx/bin/.. -Dhbase.id.str=root -Dhbase.root.logger=INFO,RFA -Dhbase.security.logger=INFO,RFAS org.apache.hadoop.hbase.thrift.ThriftServer start

​ 默认启动的thriftserve 是9090端口。

​ 后续如何使用的话,参考文章

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
机器学习/深度学习 弹性计算 前端开发
云服务器ECS---个人博客搭建体验
通过阿里云举办的飞天加速计划,有机会体验了通过云服务器ECS搭建个人博客的整个过程,在这个过程中接触到了很多新概念以及知识。
云服务器ECS---个人博客搭建体验
|
Java 应用服务中间件 Linux
搭建云服务器
搭建云服务器
244 0
搭建云服务器
上云概览———在云服务器上快速搭建个人网站
上云概览———在云服务器上快速搭建个人网站自制脑图, 介绍了选型配置、①适合个人用户的配置,②适合企业用户的配置, 创建实例,计费方式:1.包年包月,2.按需付费, 创建 Web 环境, 上传网络程序并安装。
194 0
上云概览———在云服务器上快速搭建个人网站
|
Linux 数据库
在云服务器上搭建个人博客
通过宝塔面板及typecho搭建个人博客
212 1
在云服务器上搭建个人博客
|
弹性计算 关系型数据库 MySQL
|
弹性计算 应用服务中间件 定位技术
阿里云ECS服务器搭建
ESC云服务器的搭建和tomcat简单部署
276 0
阿里云ECS服务器搭建
|
域名解析 XML 弹性计算
基于阿里云ecs的个人博客搭建实战
本文所涉及的代码出自以下博客文章,十分感谢下面各位大佬的分享 基于开源的wordpress Argon 主题制作人博客:solstice23 – Blog
369 0
基于阿里云ecs的个人博客搭建实战
|
弹性计算 Linux
使用阿里云ECS搭建属于自己的wordpress个人博客体验
本文介绍了作者这段时间使用阿里云ECS的体验和搭建wordpress过程中遇到的一些问题和自己当时的想法,以及经过一个多星期的使用有哪些收获。
使用阿里云ECS搭建属于自己的wordpress个人博客体验
|
弹性计算 关系型数据库 MySQL
使用ECS搭建自己的wordpress博客
首先在云实验室做了一次实验,熟悉了相关的流程,之后就自己尝试搭建wordpress,中间配置环境期间出现了各种问题,还重启示例好多次,不过最终还是圆满完成搭建,我拥有了自己的个人博客。
使用ECS搭建自己的wordpress博客
|
弹性计算 Linux Shell
两周以来对ECS的体验和网站简单的搭建方法
我所购买的ECS位于乌兰察布,这个地域方便的东北的小伙伴快速的访问服务器,我校的校园网的ping延迟为30ms左右,可以说速度非常快了!对在校生的科研、学习提供了很大的帮助。
下一篇
无影云桌面