您好,欢迎访问三七文档
OpenPassionValueHBase编程实践讲师:董西成博客:dongxicheng.org微信二维码见右。2目录1.Hbase访问方式2.HbaseJava编程3.Hbase多语言编程4.Hbase-MapReduce编程5.总结3Hbase访问方式NativeJavaAPI最常规和高效的访问方式;HBaseShellHBase的命令行工具,最简单的接口,适合HBase管理使用;ThriftGateway利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其他异构系统在线访问HBase表数据;RESTGateway支持REST风格的HttpAPI访问HBase,解除了语言限制;MapReduce直接使用MapReduce作业处理Hbase数据;使用Pig/hive处理Hbase数据。4目录1.Hbase访问方式2.HbaseJava编程3.Hbase多语言编程4.Hbase-MapReduce编程5.总结5HbaseJavaAPI概述Hbase是用Java语言编写的,支持Java编程是自然而然的事情;支持CRUD操作;Create,Read,Update,DeleteJavaAPI包含Hbaseshell支持的所有功能,甚至更多;JavaAPI是访问Hbase最快的方式。6JavaAPI程序设计步骤步骤1:创建一个Configuration对象包含各种配置信息步骤2:构建一个HTable句柄提供Configuration对象提供待访问Table的名称步骤3:执行相应的操作执行put、get、delete、scan等操作步骤4:关闭HTable句柄将内存数据刷新到磁盘上释放各种资源7JavaAPI程序设计步骤步骤1:创建一个Configuration对象Configurationconf=HbaseConfiguration.create();步骤2:构建一个HTable句柄HTabletable=newHTable(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已经被打包到Hbasejar包中•hbase-site.xml需添加到CLASSPATH中•hbase-site.xml将覆盖hbase-default.xml中的同名属性10创建Configuration对象Hbase如何从CLASSPATH中获取hbase-site.xml信息;修改hadoop脚本,将HbaseCLASSPATH加入在hadoop_install/conf/hadoop-env.sh中设置exportHADOOP_CLASSPATH=$HBASE_HOME/*:$HBASE_HOME/conf:$HADOOP_CLASSPATH检查HadoopCLASSPATHhadoopclasspathhadoopclasspath|grephbase11创建Configuration对象如果已经有一个Configuration文件,可进行如下操作;ConfigurationnewConf=Configuration.create(existingConf);用户自定义的配置文件将在已有配置文件之后加载将覆盖hbase-default.xml和hbase-site.xml中的配置可单独覆盖某一个或多个参数值Configurationconf=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对象;Putput=newPut(Bytes.toBytes(rowkey));步骤2:设置cell值;Put.add(family,column,value)Put.add(family,column,timestamp,value)Put.add(KeyValuekv)步骤3:调用HTable中的put方法,写入数据;步骤4:关闭HTable句柄。15向HBase写入数据16从Hbase中读取数据支持的API类型通过rowkey获取一行数据通过一个rowkey集合获取多条记录扫描整个表或者表的一部分扫描表可指定扫描的范围[startkeyendkey)表中数据是按照rowkey排序的API特点数目有限、使用简单17从Hbase中读取数据读取数据时注意事项只读取需要的数据尽可能增加数据约束条件可增加family,column(s),timerange和maxversions等约束条件接口实例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.HbaseJava编程3.Hbase多语言编程4.Hbase-MapReduce编程5.总结22Hbase-Thrift拓扑结构23使用步骤1.HDFS/HBase安装2.启动Hbasethriftserverbin/hbase-daemon.shstartthrift3.生成Hbasethriftclient接口文件thrift--genphpHbase.thriftthrift--gencppHbase.thrift4.编写客户端代码24HbaseC++编程1.生成Hbasethriftclient接口文件thrift--gencppHbase.thrifthbase.thrift位置:${HBASE_HOME}/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift2.编写客户端代码${HBASE_HOME}/src/examples/thrift/DemoClient.cpp3.编译代码(make)4.运行程序./DemoClient25HbaseC++编程—头文件26HbaseC++编程—初始化27HbaseC++编程—获取所有表28HbaseC++编程—创建表29HbaseC++编程—插入数据30HbaseC++编程—全表扫描31HbaseC++编程—全表扫描32HbasePython编程1.生成Hbasethriftclient接口文件thrift--genpyhbase.thrifthbase.thrift位置:${HBASE_HOME}/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift2.编写客户端代码${HBASE_HOME}/src/examples/thrift/DemoClient.py3.运行程序pythonDemoClient.py33HbasePython编程—头文件与初始化34HbasePython编程—获取所有表35HbasePython编程—创建表36HbasePython编程—插入数据37HbasePython编程—全表扫描38HbasePython编程—全表扫描39Hbase更多语言编程1.PHP${HBASE_HOME}/src/examples/thrift/DemoClient.php2.Ruby${HBASE_HOME}/src/examples/thrift/DemoClient.rb3.其他语言Thrift支持的语言全部支持,包括:C++、C#、Cocoa、D、Delphi、Erlang、Haskell、Java、Perl、PHP、Python、Ruby、Smalltalk等40目录1.HBase访问方式2.HbaseJava编程3.Hbase多语言编程4.HbaseMapReduce编程5.总结HbaseMapReduce编程—基础publicabstractclassTableMapperKEYOUT,VALUEOUTextendsMapperImmutableBytesWritable,Result,KEYOUT,VALUEOUT{}publicabstractclassTableReducerKEYIN,VALUEIN,KEYOUTextendsReducerKEYIN,VALUEIN,KEYOUT,Writable{}HbaseMapReduce编程—基础MapReduce程序基本框架创建Job对象,设置基本属性;设置scan对象,指定扫描区间和数据列;调用TableMapReduceUtil的initTableMapperJob和initTableReducerJob设置Mapper和Reducer等信息;提交作业HbaseMapReduce编程—实例HbaseMapReduce编程—实例概述HbaseMapReduce编程—Mapper实现HbaseMapReduce编程—Reducer实现HbaseMapReduce编程—main函数实现48目录1.Hbase访问方式2.HbaseJava编程3.Hbase多语言编程4.HbaseMapReduce编程5.总结总结HbaseAPI概述HbaseJava编程Hbase多语言编程Hbase-MapReduce编程总结
本文标题:HBase编程实践
链接地址:https://www.777doc.com/doc-4310526 .html