hadoop权威指南
第1部分 Hadoop基础知识
第2章 关于MapReduce
MapReduce分为两个阶段,map阶段和reduce阶段。map函数是数据准备阶段,它会准备好一个键值对的数据集合,然后交由reduce函数来处理,比如进行排序、分组、聚合等操作。
MapReduce处理示例,每年全球记录的最高记录是多少?
Map阶段的处理,对一行文本进行筛选,会有输入键(文件行的偏移量),输入值(文件行的值),输出键(年份),输出值(气温)。
Shuffle阶段的处理,map函数的输出经由MapReduce框架处理后,发送到reduce函数。这个处理过程基于键来对键值对进行排序和分组。
Reduce阶段的处理,遍历整个列表并从中找出最大的读数。
第3章 HDFS(Hadoop分布式文件系统)
管理网络中跨多台计算机存储的文件系统叫分布式文件系统,主要应对于大数据的存储方案。Hadoop实际上是一个综合性的文件系统抽象,可以自行配置HDFS的路径。
3.1 HDFS的设计
HDFS以流式数据访问模式来存储超大文件。有如下特性:
-
流式数据访问:为整个大数据的吞吐量而设计,而不是基于其他数据库处理小规模的数据以低时延的方式来完成。
-
HDFS的存储块默认为128M,是比较大的,其目的是一次初始化,减少寻址开销。
第4部分 Hadoop相关开源项目
第20章 关于hbase
20.2 概念
HBase为一个面向列的存储器,实际上它是一个面向列族的存储器。调优和存储都是在列族这个层次上进行的。
20.2.1 区域
HBase自动把表水平划分为区域(region),超过某一个设定的阈值,就会开始在不同的节点上构建区域。
20.2.2 实现
集群是基于zookeeper来进行管理的,底层会访问HDFS文件系统。
20.2.3 底层数据结构以及快的原理
LMS树,基于B+树衍生而来。借助hadoop分片同时计算,以及使用了稀疏表的方式。
tar -zxf hbase-...tar.gz
export HBASE_HOME=/workspace/app/hbase-2.5.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin
测试驱动
# 使用本地文件系统/tmp持久化存储数据
start-hbase.sh
# 表、数据操作
hbase shell
create 'test','data'
list
put 'test','row1','data:1','value1'
put 'test','row2','data:2','value2'
put 'test','row3','data:3','value3'
get 'test','row1'
scan 'test'
# 删除表
disable 'test'
drop 'test'
# 气象统计
create 'stations',{NAME=>'info'}
create 'observations',{NAME=>'data'}
附录
版本兼容问题
从代码中可以看出,书中的hadoop是基于2.5.1与hadoop的0.98.7来使用的。参考链接http://archive.apache.org/dist/。
执行代码
-
使用export导出至环境变量。
-
导入到lib的方式。
-
对于高版本的hadoop执行:hadoop jar hadoop-examples.jar MaxTemperature input/ncdc/sample.txt output。
# 递归查询文件夹的字符
find ./ | xargs grep -ri "lanqiu"