1.用自己的话阐明Hadoop平台上HDFS和MapReduce的功能、工作原理和工作过程。
HDFS
功能:
分布式文件系统,用来存储海量数据。
工作原理和过程:HDFS是Hadoop的分布式文件系统,HDFS中的文件会默认存储3份,存储在不同的机器上,提供容错机制,副本丢失或者宕机的自动恢复。HDFS总体上采用Master/Slave的架构,整个HDFS架构由Client、NameNode、Secondary NameNode和DataNode构成。NameNode负责存储整个集群的元数据信息,Client可以根据元数据信息找到对应的文件,DataNode负责数据的实际存储。当一个文件上传到HDFS的时候,DataNode会按照Block为基本单位分布在各个DataNode中,而且为了保护数据的一致性和容错性,一般一份数据会在不同的DataNode上默认存储三份。如下图所示:
MapReduce
功能:
工作原理和过程:MapReduce的工作过程分成两个阶段,map阶段和reduce阶段。每个阶段都有键值对作为输入输出,map函数和reduce函数的具体实现由程序员完成。
MapReduce的框架也是采用Master/Slave的方式组织,如下图所示。由四部分组成,分别为Client、JobTracker、TaskTracker以及Task。JobTracker主要负责资源监控和作业调度。JobTracker监控TaskTracker是否存活,任务执行的状态以及资源的使用情况,并且把得到的信息交给TaskSceduler。TaskSceduler根据每个TaskTracker的情况给分配响应的任务。
TaskTracker会周期性通过heartbeats向JobTracker发送资源的使用情况,任务的执行状况等信息,同时会接收JobTracker的指令,TaskTracker把自己可支配的资源分成若干个Slot,Task只有拿到一个Slot资源才能执行任务。
Task任务分成Map Task和Reduce Task两种任务,都是由TaskTracker进行调度的。
2.HDFS上运行MapReduce
mapper.py
one
word
key value context
wordvalue
contextword one
reduce.py
key values context
sum
intWritable values
sum intWritable
contextkey sum
cd homehadoopwc
sudo gedit py
chmod ax homehadooppy
本机上测试运行代码:
/home/hadoop/wc/mapper.py /home/hadoop/wc/mapper.py -k1,1 /home/hadoop/wc/reducer.p
启动Hadoop,HDFS, JobTracker, TaskTracker:
放到HDFS上运行
下载并上传文件到hdfs上:
cd homehadoopwc
wget httpwwwgutenbergorgfilestxt
wget httpwwwgutenbergorgcacheepubpg20417txt
cd usrhadoopwc
hdfs dfs put homehadoophadoopgutenbergtxt userhadoop
新建一个文件5000-8.txt,运行结果如下:
还没有评论,来说两句吧...