YARN 和 MapReduce的内存分配公式 http://linxiao.iteye.com/blog/2270021

eclipse/intellij idea 远程调试hadoop 2.6.0 http://www.cnblogs.com/yjmyzz/p/how-to-remote-debug-hadoop-with-eclipse-and-intellij-idea.html

intellij IDEA下远程调试hadoop http://blog.csdn.net/lastsweetop/article/details/8964520

Hadoop操作HDFS命令 http://blog.csdn.net/bigdatahappy/article/details/10068881

hdfs下的文件操作常用命令总结 https://segmentfault.com/a/1190000002672666

Hadoop调优 https://github.com/mattshma/bigdata/blob/master/hadoop/hdfs/tune.md

 

Hive几种数据导入方式 https://www.iteblog.com/archives/949

 

技术解释:

hadoop之NameNode,DataNode,Secondary NameNode http://www.cnblogs.com/zhanghuijunjava/archive/2013/04/23/NameNode_DataNode_SecondaryNameNode.html

Hadoop日记Day1—Hadoop介绍 http://www.cnblogs.com/sunddenly/p/3977011.html 这里对名词做了大概介绍

 

HDFS架构
(1) 主从结构
•主节点,只有一个: nameNode
•从节点,有很多个: dataNodes
(2) nameNode负责:管理
•接收用户操作请求,可以实现对文件系统的操作(一般的操作方式有两种,命令行方式和Java API方式)
•维护文件系统的目录结构(用来对文件进行分类管理)。
•管理文件与block之间关系(文件被划分成了Block,Block属于哪个文件,以及Block的顺序好比电影剪辑),block与datanode之间关系。
(3) dataNode负责:存储
•存储文件
•文件被分成block(block一般是以64M来划分,但每个Block块所占用的空间是文件实际的空间)存储在磁盘上,将大数据划分成相对较小的block块,这样可以充分利用磁盘空间,方便管理。
•为保证数据安全,文件会有多个副本(就好比配钥匙,都是为了预防丢失),这些副本会一块一块复制,分别存储在不同的DataNode上。

Client:切分文件;访问HDFS;与NameNode交互,获取文件位置信息;与DataNode交互,读取和写入数据。
NameNode:Master节点,在hadoop1.X中只有一个,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理客户端请求。
DataNode:Slave节点,存储实际的数据,汇报存储信息给NameNode。
Secondary NameNode:辅助NameNode,分担其工作量;定期合并fsimage和fsedits,推送给NameNode;紧急情况下,可辅助恢复NameNode,但Secondary NameNode并非NameNode的热备。

MapReduce架构
(1)主从结构
主节点,只有一个: JobTracker
从节点,有很多个: TaskTrackers
(2)JobTracker 负责:
•接收客户提交的计算任务
•把计算任务分给TaskTrackers执行
•监控TaskTracker的执行情况
(3)TaskTrackers负责:
•执行JobTracker分配的计算任务

JobTracker:Master节点,只有一个,管理所有作业,作业/任务的监控、错误处理等;将任务分解成一系列任务,并分派给TaskTracker。
TaskTracker:Slave节点,运行Map Task和Reduce Task;并与JobTracker交互,汇报任务状态。
Map Task:解析每条数据记录,传递给用户编写的map(),并执行,将输出结果写入本地磁盘(如果为map-only作业,直接写入HDFS)。
Reducer Task:从Map Task的执行结果中,远程读取输入数据,对数据进行排序,将数据按照分组传递给用户编写的reduce函数执行。

ApplicationMaster 负责一个 Job 生命周期内的所有工作,类似老的框架中 JobTracker。但注意每一个 Job(不是每一种)都有一个 ApplicationMaster,它可以运行在 ResourceManager 以外的机器上。
NodeManager 功能比较专一,就是负责 Container 状态的维护,并向 RM 保持心跳。
ResourceManager 负责作业与资源的调度,是基于应用程序对资源的需求进行调度的 ; 每一个应用程序需要不同类型的资源因此就需要不同的容器。资源包括:内存,CPU,磁盘,网络等等。
Application Timeline Server可认为YARN提供给应用程序的用于共享信息的共享存储模块,可以将metric等信息存到该模块中,不仅仅是历史作业运行信息。
NameNode 主要功能提供名称查询服务
DataNode 数据节点,保存Block块信息, 分布式情况下,一台服务器都会运行一个DataNode
Secondary Namenode 有人翻译为第二NameNode,我认为翻译为辅助NameNode更为合理, 1:主要工作保存namenode中对HDFS metadata的信息的备份; 2:主要工作帮助NameNode合并edit log,减少NameNode的启动时间.

 

 

源码知识:

Hadoop学习笔记 http://www.cnblogs.com/beanmoon/category/438867.html

Hadoop编程笔记(一):Mapper及Reducer类详解 http://www.cnblogs.com/beanmoon/archive/2012/12/06/2804594.html

Hadoop学习笔记(二):从map到reduce的数据流 http://www.cnblogs.com/beanmoon/archive/2012/12/08/2805636.html

[Hadoop源码解读](一)MapReduce篇之InputFormat http://blog.csdn.net/posa88/article/details/7897963

[Hadoop源码解读](二)MapReduce篇之Mapper类 http://blog.csdn.net/posa88/article/details/7901304

[Hadoop源码解读](三)MapReduce篇之Job类 http://blog.csdn.net/posa88/article/details/7902709

[Hadoop源码解读](四)MapReduce篇之Counter相关类 http://blog.csdn.net/posa88/article/details/7904720

[Hadoop源码解读](五)MapReduce篇之Writable相关类 http://blog.csdn.net/posa88/article/details/7906426

[Hadoop源码解读](六)MapReduce篇之MapTask类 http://blog.csdn.net/posa88/article/details/7956767

在 Hadoop 上编写 MapReduce 程序 —— 上下文 https://www.oschina.net/translate/writing-hadoop-map-reduce-program-in-java

 

一个例子: 直接在eclipse或者idea上执行的例子

  1.    统计单词

2.   统计单词, 但要求单词长度大于等于5

使用jdbc访问hive数据, 关于驱动问题, 查看:  http://blog.csdn.net/lanchunhui/article/details/50864137

输出:

1, eZkvtxiv, 8348
2, lHfcqlIy, 4119
3, OfdLeKDe, 4681
4, tUvGFNjp, 452
5, qOTRePCg, 79
6, AxFASxiz, 4178
7, WoXVlNSj, 1034
8, XygGaThm, 1433