轻松了一个月,被老师拉来搞hadoop和hbase,而且时间紧,任务重。每天要上交大于100字的学习日记。
先草草看了下hadoop权威指南,记录下。
Hadoop提供了一个可靠的共享存储和分析系统,HDFS实现存储,而MapReduce实现分析处理。这两个是核心。
HBase使用HDFS作为底层存储,同时支持MapReduce的批量式计算和点查询(随即读取)。
MapReduce作业(job)是客户端需要执行的一个工作单元:它包括输入数据、MapReduce程序和配置信息。Hadoop将作业分成若干个小任务(task)来执行,其中包括两类任务:map任务和reduce任务。
有两类节点控制着作业执行过程:一个jobtracker及一系列tasktracker。jobtracker通过调度tasktracker上运行的任务,来协调所有运行在系统上的作业。tasktracker在运行任务的同时将运行进度报告发送给jobtracker,jobtracker由此记录每项作业任务的整体进度情况。如果其中一个任务失败,jobtracker可以在另外一个tasktracker节点上重新调度该任务。
Hadoop将MapReduce的输入数据划分成等长的小数据块,称为输入分片。Hadoop为每个分片构建一个map任务,并由该任务来运行用户定义的map函数从而处理分片中的每条记录。
Hadoop在存储有输入数据(HDFS中的数据)的节点运行map任务,可以获得最佳性能。这就使所谓的数据本地化优化。
map任务将其输入写入本地硬盘,而非HDFS。因为map的输出是中间结果:该中间结果由reduce任务处理后才产生最终输出结果。
HDFS块大小默认为64MB。
HDFS集群有两类节点,并以管理者-工作者模式运行,即一个namenode和多个datanode。namenode管理文件系统的命名空间。它维护者文件系统树及整棵树内所有的文件和目录。这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件和编辑日志文件。namenode也记录着每个文件中各个块所在的数据节点信息,但它并不永久保存块的位置信息,因为这些信息会在系统启动时由数据节点重建。