最近需要紧急搭建Hadoop集群,以前搭建都没留下文档和记录,导致这次忙的晕头转向。现在终于搞定了,决定将全部过程记录下来,方便下次使用。
软件环境
- 操作系统:Centos 6.4
- JDK:1.6.0_27
- Hadoop:1.0.4
- HBase:0.94.17
- Zookeeper:3.4.5
前置步骤
范围:Hadoop集群所有机器
操作身份:root用户
创建Hadoop用户
关闭SELINUX
修改:
分类: 云计算
2017-02-18 20:38:10
最近需要紧急搭建Hadoop集群,以前搭建都没留下文档和记录,导致这次忙的晕头转向。现在终于搞定了,决定将全部过程记录下来,方便下次使用。
范围:Hadoop集群所有机器
操作身份:root用户
修改:
使用Scan的时候,可以配合各种Filter进行数据的筛选以减少返回的数据量,同样也可以通过选择特定的列族和列来减少返回的数据量。若是能将该特性进一步的优化则HBase会更强大,例如将客户端的代码分发到各个HRegionServer上执行,好比MapReduce一样的执行任务,执行完后返回的结果相信数据量会更小。HBase在0.92版本后引入了协处理器来实现该功能。
使用协处理器的好处是显而易见的,可以将运算放至Server端,减少通信开销的同时还能有效的提升性能。但同样的也会存在一些风险:由于协处理器目前还没有与主要的HBase进程隔离开来,若协处理器崩溃可能导致进程崩溃。
协处理器分类两类:Observer和Endpoint。可以分别对应成关系型数据库中的触发器和存储过程。
Observer类的协处理器在特定的事件发生时执行回调函数(也被称为钩子函数,hook),这些事件可以是用户产生的事件,也可以是服务器端产生的事件。
Observer分类以下三类:
接着上一篇HBase Filter – Dedicated Filters继续进行HBase Filter的学习和了解。Decorating Filters,装饰性过滤器,其自身不产生任何作用,需要结合其它过滤器来产生效果。
数据准备和代码准备同HBase Filter – Comparision Filters。
SkipFilter,跳转过滤器,目前只能作用于ValueFilter。ValueFilter用于输出满足条件的行和对应的列(该行中也有1至N列满足),当加上SkipFilter后,若某行中有不满足ValueFilter的列存在,则整行都不会输出(即,只要某行中有一列不满足ValueFilter,则其它满足的列也不会输出)。
代码示例
输出结果为空,因为没有哪一行的所有列的值全部以100开头。
接着上一篇HBase Filter – Comparision Filters继续进行HBase Filter的学习和了解。Dedicated Filters,专用过滤器,其实现的功能大部分可以通过对Comparision Filters进行一层包装来实现。
数据准备和代码准备同HBase Filter – Comparision Filters。
代码示例
HBase的Get和Scan实例可以调用setFilter()来设置过滤器,HBase的过滤器种类繁多,以满足不同的过滤需求。Filter作用于各个RegionServer,通过使用过滤器可以高效的获取数据。HBase Filter主要分为三大类,用户也可以通过继承FilterBase或实现Filter接口来自定义Filter。若需要多个Filter结合使用,可以通过FilterList来满足。
以下主要对各个Filter进行简单的了解。
rowkey | cf1:col1 | cf1:col2 | cf2:col1 | cf2:col2 |
---|---|---|---|---|
101 | 10086 | qwe1 | 1352288xxxx | wer1 |
102 | 10000 | sdf2 | 1820160xxxx | ert2 |
103 | 10001 | cxv3 | 1531308xxxx | mnb3 |
104 | 12306 | jhg4 | 1387223xxxx | kji4 |
105 | 12580 | nju5 | 1580101xxxx | nbv5 |
MapReduce中传递参数必须通过configuration.set..()一系列函数来设置。如果通过属性来传递参数,那么必然会报空指针的错误。如下为经典错误示例:
运行的结果会是输出10和20吗?单机情况下确实如此,但是若在集群上跑,则会发现a为null,b=0。至于为什么,很简单:集群、分布式、JobTracker、TaskTracker。
进入HBase Shell,scan一下:
和上的示例
概念视图
Row Key | Time Stamp | ColumnFamily contents | ColumnFamily anchor |
---|---|---|---|
"com.cnn.www" | t1 |
|
anchor:cnnsi.com = "CNN" |
"com.cnn.www" | t2 |
|
anchor:my.look.ca = "CNN.com" |
"com.cnn.www" | t3 | contents:html = "..." |
|
"com.cnn.www" | t4 | contents:html = "..." |
|
"com.cnn.www" | t5 | contents:html = "..." |
|
物理视图
ColumnFamily anchor
Row Key | Time Stamp | Column Family anchor |
---|---|---|
"com.cnn.www" | t1 | anchor:cnnsi.com = "CNN" |
"com.cnn.www" | t2 | anchor:my.look.ca = "CNN.com" |