hbase编程实践


Open Passion Value HBase编程实践 讲师:董西成 博客:dongxicheng.org 微信二维码见右。 2 目录 1. Hbase 访问方式 2. Hbase Java编程 3. Hbase多语言编程 4. Hbase-MapReduce编程 5. 总结 3 Hbase 访问方式  Native Java API  最常规和高效的访问方式;  HBase Shell  HBase的命令行工具,最简单的接口,适合HBase管理使 用;  Thrift Gateway  利用Thrift序列化技术,支持C++,PHP,Python等多种 语言,适合其他异构系统在线访问HBase表数据;  REST Gateway  支持REST 风格的Http API访问HBase, 解除了语言限制;  MapReduce  直接使用MapReduce作业处理Hbase数据;  使用Pig/hive处理Hbase数据。 4 目录 1. Hbase 访问方式 2. Hbase Java编程 3. Hbase多语言编程 4. Hbase-MapReduce编程 5. 总结 5 Hbase Java API概述  Hbase是用Java语言编写的,支持Java编程 是自然而然的事情;  支持CRUD操作; Create, Read, Update, Delete  Java API包含Hbase shell支持的所有功能, 甚至更多;  Java API是访问Hbase最快的方式。 6 Java API程序设计步骤 步骤1:创建一个Configuration对象  包含各种配置信息 步骤2:构建一个HTable句柄  提供Configuration对象  提供待访问Table的名称 步骤3:执行相应的操作  执行put、get、delete、scan等操作 步骤4:关闭HTable句柄  将内存数据刷新到磁盘上  释放各种资源 7 Java API程序设计步骤 步骤1:创建一个Configuration对象 Configuration conf = HbaseConfiguration.create(); 步骤2:构建一个HTable句柄 HTable table = new HTable(conf, tableName); 步骤3:执行相应的操作 table.getTableName(); 步骤4:关闭HTable句柄 table.close(); 8 示例程序 9 创建Configuration对象  Configuration对象包装了客户端程序连接Hbase服务 所需的全部信息;  Zookeeper位置  Zookeeper连接超时时间  HbaseConfiguration.create()内部逻辑  从CLASSPATH中加载hbase-default.xml和hbase-site.xml 两个文件 • hbase-default.xml已经被打包到Hbase jar包中 • hbase-site.xml需添加到CLASSPATH中 • hbase-site.xml将覆盖hbase-default.xml中的同名属性 10 创建Configuration对象  Hbase如何从CLASSPATH中获取hbase-site.xml信 息;  修改hadoop脚本,将Hbase CLASSPATH加入  在/conf/hadoop-env.sh中设置 export HADOOP_CLASSPATH=$HBASE_HOME/*:$HBASE_HOME/conf:$HA DOOP_CLASSPATH  检查Hadoop CLASSPATH  hadoop classpath  hadoop classpath | grep hbase 11 创建Configuration对象  如果已经有一个Configuration文件,可进行如下操 作; Configuration newConf = Configuration.create(existingConf);  用户自定义的配置文件将在已有配置文件之后加载  将覆盖hbase-default.xml和hbase-site.xml中的配置  可单独覆盖某一个或多个参数值 Configuration conf = HbaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "node1,node2");  通常不推荐这么做! 12 创建HTable句柄 org.apache.hadoop.hbase.client.HTable  一个table对应一个HTable句柄  提供了CRUD操作  设计简单、使用方便  提供行级事务  不支持多行事务或者表级别的事务  严格的行一致性  并发读、顺序写 13 创建HTable句柄  创建HTable句柄代价很大  扫描.META.表等;  创建一次,以后尽可能复用;  如果需要创建多个Htable句柄,使用 HTablePool;  HTable并非线程安全的  一个线程创建一个即可  Htable支持CRUD批处理  非线程安全,仅是为了提高性能 14 向HBase写入数据 步骤1:创建一个Put对象;  Put put = new Put(Bytes.toBytes("rowkey")); 步骤2:设置cell值;  Put.add(family, column, value)  Put.add(family, column, timestamp, value)  Put.add(KeyValue kv) 步骤3:调用HTable中的put方法,写入数据; 步骤4:关闭HTable句柄。 15 向HBase写入数据 16 从Hbase中读取数据  支持的API类型  通过rowkey获取一行数据  通过一个rowkey集合获取多条记录  扫描整个表或者表的一部分  扫描表  可指定扫描的范围[startkey endkey)  表中数据是按照rowkey排序的  API 特点  数目有限、使用简单 17 从Hbase中读取数据  读取数据时注意事项  只读取需要的数据  尽可能增加数据约束条件  可增加family, column(s), time range 和 max versions等约 束条件  接口实例  get.setTimeRange(minStamp, maxStamp)  get.setMaxVersions(maxVersions)  get.addFamily(family)  get.addColumn(family, column) 18 从Hbase中读取数据 19 从Hbase中删除数据 20 从Hbase中scan数据 21 目录 1. Hbase 访问方式 2. Hbase Java编程 3. Hbase多语言编程 4. Hbase-MapReduce编程 5. 总结 22 Hbase-Thrift 拓扑结构 23 使用步骤 1. HDFS/HBase安装 2. 启动Hbase thrift server  bin/hbase-daemon.sh start thrift 3. 生成Hbase thrift client接口文件  thrift --gen php Hbase.thrift  thrift --gen cpp Hbase.thrift 4. 编写客户端代码 24 Hbase C++编程 1. 生成Hbase thrift client接口文件  thrift --gen cpp Hbase.thrift  hbase.thrift位置: ${HBASE_HOME}/src/main/resources/org/apache/hadoop/h base/thrift/Hbase.thrift 2. 编写客户端代码 ${HBASE_HOME}/src/examples/thrift/DemoClient.cpp 3. 编译代码(make) 4. 运行程序  ./DemoClient 25 Hbase C++编程—头文件 26 Hbase C++编程—初始化 27 Hbase C++编程—获取所有表 28 Hbase C++编程—创建表 29 Hbase C++编程—插入数据 30 Hbase C++编程—全表扫描 31 Hbase C++编程—全表扫描 32 Hbase Python编程 1. 生成Hbase thrift client接口文件  thrift --gen py hbase.thrift  hbase.thrift位置: ${HBASE_HOME}/src/main/resources/org/apache/hadoop/h base/thrift/Hbase.thrift 2. 编写客户端代码 ${HBASE_HOME}/src/examples/thrift/DemoClient.py 3. 运行程序  python DemoClient.py 33 Hbase Python编程—头文件与初始化 34 Hbase Python编程—获取所有表 35 Hbase Python编程—创建表 36 Hbase Python编程—插入数据 37 Hbase Python编程—全表扫描 38 Hbase Python编程—全表扫描 39 Hbase更多语言编程 1. PHP ${HBASE_HOME}/src/examples/thrift/DemoClient.php 2. Ruby  ${HBASE_HOME}/src/examples/thrift/DemoClient.rb 3. 其他语言  Thrift支持的语言全部支持,包括:C++、C#、Cocoa、 D、Delphi、Erlang、Haskell、Java、Perl、PHP、 Python、Ruby、Smalltalk等 40 目录 1. HBase访问方式 2. Hbase Java编程 3. Hbase多语言编程 4. Hbase MapReduce编程 5. 总结 Hbase MapReduce编程—基础 public abstract class TableMapper extends Mapper {} public abstract class TableReducer extends Reducer { } Hbase MapReduce编程—基础  MapReduce程序基本框架  创建Job对象,设置基本属性;  设置scan对象,指定扫描区间和数据列;  调用TableMapReduceUtil的initTableMapperJob和 initTableReducerJob设置Mapper和Reducer等信息;  提交作业 Hbase MapReduce编程—实例 Hbase MapReduce编程—实例概述 Hbase MapReduce编程—Mapper实现 Hbase MapReduce编程—Reducer实现 Hbase MapReduce编程—main函数实现 48 目录 1. Hbase 访问方式 2. Hbase Java编程 3. Hbase多语言编程 4. Hbase MapReduce编程 5. 总结 总结  Hbase API概述  Hbase Java编程  Hbase多语言编程  Hbase-MapReduce编程  总结
还剩48页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

i_google

贡献于2016-12-15

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf