`
zhaohuafei
  • 浏览: 26958 次
文章分类
社区版块
存档分类
最新评论

Hadoop读书笔记——基础知识

 
阅读更多
//书非借不能读也,今早从图书馆新书阅览室借来《Hadoop in Action》,最长借期7天。整理读书笔记并留下电子版以供以后方便复习。
Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据。专为离线处理和大规模数据分析而设计,避免耗时的数据传输问题,适合一次写入,多次读取。
特性:方便、健壮、可扩展、简单。

MapReduce
分为两个阶段:mapping 和 reducing
每阶段定义一个数据处理函数,称为mapper和reducer
在mapping阶段,MapReduce获取输入数据并将数据单元装入mapper
在ruducing阶段,reducer处理来自mapper的所有输出,并给出最终结果。
简而言之,mapper将输入进行过滤与转换,reducer完成聚合。

处理过程:
1)应用的输入必须组织为一个键/值对的列表list(<k1,v1>)。如,用于处理日志文件的输入格式为list(<Integer line_number,String log_event>);
2)含有键/值对的列表被拆分,通过调用mapper的map函数对每个单独的键/值对<k1,v1>进行处理;
3)所有的mapper输出被聚合到一个包含<k2,v2>对的巨大列表中,所有共享相同k2的对被组织在一起形成新的<k2,list(v2)>.


input
output
map
<k1,v1>
list(<k2,v2>)
reduce
<k2,list(v2)>
list(<k3,v3>)

Hadoop的三种模式:
1.单机模式
配置文件conf为空时,Hadoop会完全运行在本地。因为不需要与其他节点交互,单机模式不使用HDFS,也不加载任何Hadoop守护进程。该模式主要用于开发调试MapReduce程序的逻辑。

2.伪分布模式
在“单节点集群”运行Hadoop,其中所有的守护进程都运行在同一台机器上。它具备生产集群的所有功能及“节点”,分别运行在不同的JVM上。所有的软件组件都是分布式的,与生产集群的区别仅仅在于系统和硬件规模上。

3.全分布模式
明确地声明NameNode和JobTracker守护进程所在的主机名。HDFS中的文件块默认有3份备份。

模式间的切换:
不要不断地编辑xml文件,而是使用符号链接,为做到这一点,需要为每一种模式分别生成一个配置目录,并相应的放入恰当版本的xml。如,有三个配置文件夹conf.standalone,conf.pseudo,conf.cluster 分别作为三种模式的配置文件。可以使用ln命令实现,如ln -s conf.custer conf.

----------------------------------------------------------------------

节点
1.NameNode
Hadoop分布式计算与分布式存储都采用了主/从(master/slave)结构。分布式存储系统被称为Hadoop文件系统,简称HDFS。NameNode位于HDFS的主端,它指导从端的DataNode执行底层的I/O任务。NameNode是Hadoop的书记员,它跟踪文件如何被分割成文件块,而这些文件块又被哪些节点存储,以及分布式文件系统的整体运行状态是否正常。运行NameNode要消耗大量的内存和I/O资源。

2.DataNode
每一个集群上的从节点都会驻留一个DataNode守护进程,来执行文件系统的工作——将HDFS数据块读取或者写入到本地文件系统的实际文件中。当希望对HDFS文件进行读写时,文件被分割成多个块,由NameNode告知客户端每个数据块驻留在哪个DataNode,客户端直接与DataNode守护进程通信,来处理与数据块相对应的本地文件。而后,DataNode会与其他DataNode通信,复制这些数据块以实现冗余。

3.SecondaryNameNode
是一个用于检测HDFS集群状态的辅助守护进程,它与NameNode通信,根据集群所配置的时间间隔获取HDFS元数据的快照。

4.JobTracker
是应用程序和Hadoop之间的纽带,一旦提交代码到集群上,JobTracker就会确定执行计划,包括决定处理哪些文件,为不同的文件分配节点及监控所有任务的执行 。每个Hadoop集群只有一个JobTracker守护进程,通常运行在服务器集群的主节点上。

5.TaskTracker
管理各个任务在每个从节点上的执行情况。每个TaskTracker负责执行有JobTracker分配的单项任务。

Hadoop集群典型的拓扑图,主/从结构。

HDFS基本的文件命令:
格式: hadoop fs -cmd <args>
其中,cmd代表具体的文件命令,与unix对应的命令相同,args表示可变的参数。
如,
hadoop fs ——获取完整的可用命令列表
hadoop fs -ls / ——返回根目录下/user的信息
hadoop fs -lsr / ——返回根目录下所有文件和子目录
hadoop fs -put example.txt . ——把本地文件复制到HDFS的默认目录中
hadoop fs -put example.txt /user/hadoop
hadoop fs -get example.txt . ——把HDFS中的文件复制到本地
hadoop fs -cat ——在命令行中显示文件内容
hadoop fs -rm ——删除文件
hadoop fs -rmr ——删除目录
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics