本地eclipse远程 *** 作 hbase

本地eclipse远程 *** 作 hbase,第1张

一、新建本地java工程

file->new->java project

二、添加jar包和配置文件

1、添加JAR包

右击Propertie在d出的快捷菜单中选择Java Build Path对话框,在该对话框中单击Libraries选项卡,在该选项卡下单击

Add External JARs按钮,定位到$HBASE/lib目录下,并选取如下JAR包。

hadoop-core-1.0.0.jar

commons-loggings-version.jar

commons-cli-version.jar

commons-lang-version.jar

commons-configuration-version.jar

hbase-0.94.1.jar

zookeeper-3.4.3.jar

slf4j-api-1.5.8.jar

slf4j-log4j12-1.5.8.jar

log4j-1.2.16.jar

protobuf-java-2.4.1.jar

2、添加hbase-site.xml配置文件

在工程根目录下创建conf文件夹,将$HBASE_HOME/conf/目录中的hbase-site.xml文件复制到该文件夹中。通过右键

选择Propertie->Java Build Path->Libraries->Add Class Folder。

3、windows下开发HBase应用程序,HBase部署在linux环境中,在运行调试时可能会出现无法找到主机,类似异常信息如下:java.net.UnknownHostException: unknown host: master

解决办法如下:在C:\WINDOWS\system32\drivers\etc\hosts文件中添加如下信息

192.168.2.34 master

hbase客户端通过rpc调用将put、delete数据请求提交到对应的regionserver,regionserver对请求进行处理,并将数据最终写入hfile中,进行持久化保存。

hbase为了保证随机读取的性能,所以hfile里面的rowkey是有序的。当客户端的请求在到达regionserver之后,为了保证写入rowkey的有序性,所以不能将数据立刻写入到hfile中,而是将每个变更 *** 作保存在内存中,也就是metastore中。metastore能够很方便的支持 *** 作的随机插入,并保证所有的 *** 作在内存中是有序的。当metastore达到一定的量之后,会将metastore里面的数据flush到hfile中,这样能充分利用hadoop写入大文件的性能优势,提高写入性能。

由于metastore是存放在内存中,如果regionserver因为某种原因死了,会导致内存中数据丢失。所有为了保证数据不丢失,hbase将更新 *** 作在写入metastore之前会写入到一个write ahead log(WAL)中。WAL文件是追加、顺序写入的,WAL每个regionserver只有一个,同一个regionserver上所有region写入同一个的WAL文件。这样当某个regionserver失败时,可以通过WAL文件,将所有的 *** 作顺序重新加载到metastore中。

2.流程

整个写入顺序图流程如下:

1

客户端查找对应region

客户端根据要 *** 作rowkey,查找rowkey对应的region。查找region的过程为通过zk获取到hbase:meta表所在region。通过查找hbase:meta可以找到要更新的表每个region的startkey、endkey以及所处机器。由于hbase的rowkey有序分布在region上,所以通过每个region的startkey、endkey可以确定当前要 *** 作rowkey的region信息。

由于通过zk、hbase:meta查找region信息比较耗时,所以客户端会缓存表的region信息。在请求region失效时,会重新加载表的region信息。

regionserver写入WAL文件

在将 *** 作写入metastore之前,会将 *** 作先写入到WAL文件中。WAL文件的是顺序保存 *** 作记录的,所有每次新 *** 作直接。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11341542.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存