在Azure HDInsight HBase集群中使用Thrift接口
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接口的更多相关文章
- hbase集群中其中某个regionserver 没有启动
第一步: date命令查看各个机器的时间 发现linux02机器时间差了2个多小时 第二步:ntpdate pool.ntp.org 修改错误时间的机器 第三步: 重启 hbase
- 基于HDInsight 3.4 HBase集群规划参考
基于linux 创建HDInsight HBase集群,选择最小配置,zk(3).NN(2).WN(2),集群节点默认组件服务规划如下 NN0: Active NameNode /HDFS ZKFai ...
- Kubernetes+Flannel 环境中部署HBase集群
2015-12-14注:加入新节点不更改运行节点参数需求已满足,将在后续文章中陆续总结. 注:目前方案不满足加入新节点(master节点或regionserver节点)而不更改已运行节点的参数的需求, ...
- 1.Hbase集群安装配置(一主三从)
1.HBase安装配置,使用独立zookeeper,shell测试 安装步骤:首先在Master(shizhan2)上安装:前提必须保证hadoop集群和zookeeper集群是可用的 1.上传:用 ...
- 从零搭建HBase集群
本文从零开始搭建大数据集群,涉及Linux集群安装搭建,Hadoop集群搭建,HBase集群搭建,Java接口封装,对接Java的C#类库封装 Linux集群搭建与配置 Hadoop集群搭建与配置 H ...
- hadoop(四): 本地 hbase 集群配置 Azure Blob Storage
基于 HDP2.4安装(五):集群及组件安装 创建的hadoop集群,修改默认配置,将hbase 存储配置为 Azure Blob Storage 目录: 简述 配置 验证 FAQ 简述: hadoo ...
- 大数据中HBase集群搭建与配置
hbase是分布式列式存储数据库,前提条件是需要搭建hadoop集群,需要Zookeeper集群提供znode锁机制,hadoop集群已经搭建,参考 Hadoop集群搭建 ,该文主要介绍Zookeep ...
- hbase集群安装与部署
1.相关环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 hbase1.2.4 本篇文章仅涉及hbase集群的搭建,关于hadoop与zookeeper的相关部 ...
- 使用ganglia监控hadoop及hbase集群
一.Ganglia简介 Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点.每台计算机都运行一个收集和发送度量数据(如处理器速度.内存使用量等)的名为 gm ...
随机推荐
- UVA 11722
You are going from Dhaka to Chittagong by train and you came to know one of your old friends is goin ...
- Javacript 客户端保存数据[ locaStorage ]
1.通常程序员们会使用Cookie进行一些小量的数据储存在客户端浏览器,但孰不知这样会造成不必要的带宽浪费 ,可使用 js 中的 locaStorage 来替代cookie进行存储,但不支持IE8以下 ...
- Keil V4.72升级到V5.1X之后
问题描述 Keil V4.72升级到V5.1x之后,原来编译通过的工程,出现了如下错误: .\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\STM32f ...
- 10个优秀的Objective-C和iOS开发在线视频教程
如果你自己开发iOS应用,你肯定会发现网上有很多资源.学习编程的一个最好的方法就是自己写代码,而开始写代码的最快的方式就是看其他人怎么写.我们从海量视频和学习网站中整理出了我 如果你自己开发iOS应用 ...
- Indri中的动态文档索引技术
Indri中的动态文档索引技术 戴维 译 摘要: Indri 动态文档索引的实现技术,支持在更新索引的同时处理用户在线查询请求. 文本搜索引擎曾被设计为针对固定的文档集合进行查询,对不少应用来说,这种 ...
- 浅淡Windows7 32位与64位/x86与x64的区别
看到有很多会员问到底是选Windows7 x86,还是选x64.这里简单的谈一下这这两种系统的区别. 简单的说x86代表32位操作系统 x64代表64位操作系统. 简单的判断电脑是否支持64位操作系 ...
- poj 3041 Asteroids (最大匹配最小顶点覆盖——匈牙利模板题)
http://poj.org/problem?id=3041 Asteroids Time Limit: 1000MS Memory Limit: 65536K Total Submissions ...
- Linux学习笔记(5)-进程管理
进程简介 进程是正在执行的一个程序或命令,每一个进程都有自己的地址空间,并占有一定的系统资源.感性的认识,进程就是一个正在运行的程序 进程管理的作用 判断服务器的运行状态 查看系统中有哪些进程 杀死进 ...
- zepto点击事件兼容pc和mobile
判断pc还是mobile,重写click事件 var CLICK='click'; (function browserRedirect() { var sUserAgent = navigator.u ...
- hibernate添加数据,默认字段为null的问题解决
数据库中的一个字段默认为0,但是在用hibernate的添加之后,默认字段竟然不是0,为NULL. 查了一下.发现想要让默认字段生效.需要在*.hbm.xml添加一些参数,如下.(红色部分) dyna ...