hadoop 学习笔记
参考资料:《Hadoop 权威指南》
1 map处理完后,hadoop框架会将结果安装键进行排序,然后将排好的结果传给reduce
2 需要低延迟的应用不适合HDFS,对于低延迟应用HBase更适合
3 HDFS中的文件只有一个写入者,而且写操作总是在文件的末尾,不支持多个写入者或在文件任意位置修改
4 HDSF集群有两种节点:一个名称节点(管理者)和多个数据节点(工作者)
名称节点维护着这个文件系统的树及树内所有的文件和索引目录;一点名称节点坏掉,所有的文件将会丢失,因为无法知道如何通过数据节点上的块来重建文件
数据节点存储和提供定位块的服务,并定时向名称节点发送存储的块的列表
5 HDFS默认将数据块复制3份,可以通过dfs.replication来控制复制的份数,在一台机器上运行HDFS(即伪分布模式)时,要将此参数设为1,否则会持续警告块的副本不够
6 HDFS的文件由副本数这个概念,但目录没有,因为目录是作为元数据存储在名称节点的,而不是数据节点
7 通过hadoop fs命令可以对HDFS这个文件系统进行读取文件、创建目录、移动文件、删除数据、列出索引目录等操作
8 sequenceFile类作为小型文件的容器也不错,HDFS和mapreduce是大型文件的利器,所以将文件打包到一个sequenceFile类中,使得我们能够更高效地对小型文件进行存储和处理(第7章有一个程序将文件打包到一个sequenceFile
9 MapReduce 模型将作业分隔成任务,然后并行运行任务,是作业整体执行时间少于顺序执行的时间
10 reduce函数的输入类型必须与map函数的输出类型一致
11 输入数据的类型是通过输入格式进行设定的
12 reducer槽的数目是集群中节点数与mapred.tasktracker.reduce.tasks.maxinum的乘机。
13 一个通常做法是将reducer个数设置成稍小于reducer任务槽数
14 若有8个处理器,并想在每个处理器上运行两个程序,则设置mapred.tasktracker.map.tasks.maximun和mapred.tasktracker.reduce.tasks.maximun为7(不是8,因为数据节点和tasktracker各自占一个槽)
15 应尽量避免小文件
16 Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 ./output
删除。
17 可以通过命令 jps
来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode”和SecondaryNameNode
18 成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件
19 单机模式,grep 例子读取的是本地数据,伪分布式读取的则是 HDFS 上的数据
20 搭建为分布式Hadoop:参考资料 http://www.powerxing.com/install-hadoop-in-centos/