Sun
wei
  Wed, Feb 25 2015 2:17 AM

Apache Thrift 是一种可扩展的跨语言服务接口,可以通过内置的代码生成引擎帮助创建跨语言服务类库,Apache
HBase
 也是通过Thrift sever与Python,Ruby等其他程序开发语言进行交互。但是默认情况下Thrift Server默认不是启动的,需要手工处理一下。在Azure HDInight HBase中这种处理的方式有2种,我们可以根据使用场景来进行配置。

第一种方法相对简单,我们可以通过RDP远程连接到HeadNode0上,通过命令行hbase thrift2 start的方法启动thrift server进程。这种方法很简单,但是并不能能满足高可用的要求,只能用于开发测试环境。

第二种方法会复杂很多,但是可以提供生产级别的可用性,可扩展性要求。

  • 创建2个Linux VM并将Azure HDInsight HBase集群部署到相同的虚拟网络上
  • 在VM中设置$JAVA_HOME
  • 在VM中配置repositories wget -nv http://public-repo-1.hortonworks.com/HDP/centos6/2.x/GA/2.2.0.0/hdp.repo -O
    /etc/yum.repos.d/hdp.repo
  • 在VM中安装HBase sudo yum install hbase
  • 在VM中修改hbase-site.xml,主要是提供zookeeper的地址,可以通过DNS或者host文件的方法提供这些zookeeper及workernode的名字解析,zookeeper以及workernode的名称可以通过Ambari
    API
    得到

<configuration>

   <property>

     <name>hbase.cluster.distributed</name>

     <value>true</value>

   </property>

   <property>

     <name>hbase.zookeeper.quorum</name>

     <value>zookeeper0.hbase.hdicluster.local,zookeeper1.hbase.hdicluster.local,zookeeper2.hbase.hdicluster.local</value>

   </property>

   <property>

     <name>hbase.zookeeper.property.clientPort</name>

     <value>2181</value>

   </property>

 </configuration>

  • 配置服务进程,我们需要在/etc/init.d目录下添加一个名称为hbase-thrift2的服务启动脚本

#!/bin/sh

#

chkconfig :2345 90 60

#

description : hbase thrift gateway service, port 9090

./etc/init.d/functions

FriendlyName="HBase Thrift Gataway"

RETVAL=0

start()

{

echo

-n $"Starting $FriendlyName:"

/usr/hdp/2.2.0.0-2041/hbase/bin/hbase-daemon.sh thrift2 -threadpool &

}

stop()

{

echo

-n $"Stopping $FriendlyName"

/usr/hdp/2.2.0.0-2041/hbase/bin/hbase-daemon.sh stop thrift2

RETVAL=$?

echo

return

$RETVAL

}

case

"$1" in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

*)

echo

$"Usage $0 {start|stop|restart}

RETVAL=1

esac

exit

$RETVAL

  • 更改脚本的执行权限

sudo chmod +x hbase-thrift2

  • 将服务设置为自动启动

sudo chkconfig --add hbase-thrift2

sudo chkconfig hbase-thrift2 on

  • 将2个VM放置于同一个高可用集中
  • 通过Internal Loadbalancer为这2个VM提供负载均衡,同时也兼具HA的功能

Add-AzureInternalLoadBalancer-ServiceName$svcName-InternalLoadBalancerName$ilb-SubnetName$subnet

$prot="tcp"

$locport=9090

$pubport=9090

$epname="Thrift2"

$vmname01 = "hbthrift01"

$vmname02 = "hbthrift02"

$lbsetname="HBThriftLBSet"

Get-AzureVM -ServiceName$svcName-Name$vmname01|Add-AzureEndpoint-LBSetName$lbsetname-Name$epname-Protocol$prot-LocalPort$locport-PublicPort$pubport-ProbePort$locport-ProbeProtocol$prot-InternalLoadBalancerName$ilb|Update-AzureVM

Get-AzureVM -ServiceName$svcName-Name$vmname02|Add-AzureEndpoint-LBSetName$lbsetname-Name$epname-Protocol$prot-LocalPort$locport-PublicPort$pubport-ProbePort$locport-ProbeProtocol$prot-InternalLoadBalancerName$ilb|Update-AzureVM

通过这些步骤你的Thrift sever就可以工作了,enjoy

如果你有任何疑问,欢迎访问MSDN社区,由专家来为您解答Windows
Azure各种技术问题,或者拨打世纪互联客户服务热线400-089-0365/010-84563652咨询各类服务信息。

本文转载自: http://blogs.msdn.com/b/cciccat/archive/2015/02/25/azure-hdinsight-hbase-thrift.aspx

在Azure HDInsight HBase集群中使用Thrift接口的更多相关文章

  1. hbase集群中其中某个regionserver 没有启动

    第一步: date命令查看各个机器的时间 发现linux02机器时间差了2个多小时 第二步:ntpdate pool.ntp.org 修改错误时间的机器 第三步: 重启 hbase

  2. 基于HDInsight 3.4 HBase集群规划参考

    基于linux 创建HDInsight HBase集群,选择最小配置,zk(3).NN(2).WN(2),集群节点默认组件服务规划如下 NN0: Active NameNode /HDFS ZKFai ...

  3. Kubernetes+Flannel 环境中部署HBase集群

    2015-12-14注:加入新节点不更改运行节点参数需求已满足,将在后续文章中陆续总结. 注:目前方案不满足加入新节点(master节点或regionserver节点)而不更改已运行节点的参数的需求, ...

  4. 1.Hbase集群安装配置(一主三从)

     1.HBase安装配置,使用独立zookeeper,shell测试 安装步骤:首先在Master(shizhan2)上安装:前提必须保证hadoop集群和zookeeper集群是可用的 1.上传:用 ...

  5. 从零搭建HBase集群

    本文从零开始搭建大数据集群,涉及Linux集群安装搭建,Hadoop集群搭建,HBase集群搭建,Java接口封装,对接Java的C#类库封装 Linux集群搭建与配置 Hadoop集群搭建与配置 H ...

  6. hadoop(四): 本地 hbase 集群配置 Azure Blob Storage

    基于 HDP2.4安装(五):集群及组件安装 创建的hadoop集群,修改默认配置,将hbase 存储配置为 Azure Blob Storage 目录: 简述 配置 验证 FAQ 简述: hadoo ...

  7. 大数据中HBase集群搭建与配置

    hbase是分布式列式存储数据库,前提条件是需要搭建hadoop集群,需要Zookeeper集群提供znode锁机制,hadoop集群已经搭建,参考 Hadoop集群搭建 ,该文主要介绍Zookeep ...

  8. hbase集群安装与部署

    1.相关环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 hbase1.2.4 本篇文章仅涉及hbase集群的搭建,关于hadoop与zookeeper的相关部 ...

  9. 使用ganglia监控hadoop及hbase集群

    一.Ganglia简介 Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点.每台计算机都运行一个收集和发送度量数据(如处理器速度.内存使用量等)的名为 gm ...

随机推荐

  1. Python 信号量

    信号的概念 信号(signal)--     进程之间通讯的方式,是一种软件中断.一个进程一旦接收到信号就会打断原来的程序执行流程来处理信号. 几个常用信号: SIGINT     终止进程  中断进 ...

  2. ENVI中利用polygon掩膜修改类到指定类

    overlay——classification——制定分类的图像 edit——polygon delete from class(选择这个掩膜模式) edit——set delete class va ...

  3. 统计网卡TX(发送)RX(接受)流量脚本

    显示网卡流量的方法蛮多,一般我们可以通过dstat来查看,但dstat不一定所有的机器都有安装.而我们知道,通过ifconfig可以看到某一网卡发送与接收的字节数,所以我们可以写一个脚本来统计一下. ...

  4. js模拟触发事件

     html标签元素封装着实用的[事件],但在很多时候,需要[模拟触发事件],比如 [按钮单机事件]  可以实实在在点击按钮触发该事件,但体验而言,很多时候需要js逻辑处理让实现 触发事件的效果这时就用 ...

  5. Duilib介绍以及各个类的简介

    转自http://note.sdo.com/u/icez/n/mvO-X~jyVnpFnM01A0000m DirectUI意为直接在父窗口上绘图(Paint on parent dc directl ...

  6. sql之left join、right join、inner join的区别(转)

    感谢:http://www.cnblogs.com/pcjim/articles/799302.html ----------------------------------------------- ...

  7. CSS+DIV:父DIV相对定位+子DIV绝对定位

    如何在一个div内将一个div进行绝对定位呢?很简单,把父div的position属性设为relative,子div的position属性设为absolute就可以了... 示例: <html& ...

  8. zTree -- jQuery 树插件

    http://www.ztree.me/v3/main.php#_zTreeInfo http://plugins.jquery.com/zTree.v3/ 例子:http://www.ztree.m ...

  9. bzoj 3676: [Apio2014]回文串 回文自动机

    3676: [Apio2014]回文串 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 844  Solved: 331[Submit][Status] ...

  10. js的原型链

    js中的原型链是一个很重要的概念,理解了原型链,对js程序的开发有很大的好处,废话不说,先上图: javascript是基于原型的语言,所以一个对象可以另一个对象继承.不过javascript实现的时 ...