hadoop (二)解读Hello World
解读Hello World 执行过程
回顾Hello World 执行操作 (单词计数器)
1. $mkdir input
2. $cd input
3. $echo "hello world">test1.txt
4. $echo "hello hadoop">test2.txt
5. $cd ..
6. $bin/hadoop dfs -put input in
7. $bin/hadoop jar build/hadoop-0.20.2-examples.jar wordcount in out
8. $bin/hadoop dfs -cat out/*
第1-5步仅是liunx基本命令,创建一个input目录,并在该目录下创建两个包含内容的文件。
第6-8步为hadoop命令:
第6步:执行dfs命令--操作HDFS文件系统命令,上传本地文件目录input到dfs服务器上,并重命名为in。
第7步:执行hadoop自带实例jar包
*build/hadoop-0.20.2-examples.jar*:其中jar包路径为
*wordcount*:执行主函数的类名
*in和out*为执行主函数传入的两个变量,在此jar中代表dfs服务器上输入路径(数据源)和输出路径(计算结果输出)。
第8步:执行dfs命令-查看计算输出目录下文件内容。
hadoop框架核心解读
hadoop核心从上一节的 hadoop是什么 的答案可以得到:HDFS 分布式文件存储系统 和 MAPREDUCE 分布式计算。
大数据时代需要解决的问题:1、海量数据存储 2、海量数据计算。
hadoop中HDFS提供了分布式文件存储解决方案,并提供了统一接口。
hadoop中MapReduce提供了分布式计算解决方案。
传统数据计算-数据移动:主机应用通过接口将数据抓取到程序中进行进行分析计算。
大数据计算-移动计算:主机应用将程序发送到各个hadoop节点上进行计算,然后统一将结果汇总返回,相当于每个节点做一部分计算,再汇总。
HDFS 分布式文件存储系统
从标题理解就可以看出,HDFS是分布式文件系统,啥意思? 就是文件可以在多个主机节点管理,一般我们操作都是单节点操作,比如说我们电脑装的window的文件系统,一般都是单机操作。 而HDFS则提供了一个统计的交互接口,操作多台主机中文件系统。
imageMAPREDUCE 分布式计算
举个栗子:比如现在你有100个数要求和。
传统计算:一个人把这100个数和计算出来,一个个做加法。
分布式计算:有一个团队,比如说10个人,那分配一下这100个数求和的任务,每个人做10个数的求和,然后汇总到我这里,我再做10次求和,得出最终结果。
人就是主机,当文件分布在不同主机上,reduce就是来负责从HDFS文件中读取并分配任务到各个集群节点进行计算,并将集群节点计算结果汇总输出。
hadoop 进程分析
上面我们已经知道hadoop的核心是 1、分布式存储 2、移动计算。 为了完成这两个核心工作,hadoop启动了如下进程来解决,也就是我们上一节执行了 ./bin/start-all.sh 后,使用 jps 查看java进程的结果:
3624 SecondaryNameNode
3434 NameNode
4325 Jps
3686 JobTracker
4707 DataNode
4824 TaskTracker
image
NameNode
是HDFS的守护进程,负责记录文件是如何分割成数据块以及分配存储到哪个DataNode节点上,对内存及I/O进行集中管理。一个系统中只会有一个NameNode。
SecondaryNameNode
与NameNode互备
用来监控HDFS状态的辅助进程。与NameNode不同的时,它不接收或记录任何实时的数据变化,只与NameNode进行通信,以便定期地保存HDFS元数据的快照。由于NameNode是单点的,通过SecondaryNameNode的快照功能,可以将NameNode的宕机时间和数据损失降低到最小。同时NameNode发生问题时,Secondary NameNode可以及时地作为备用NameNode使用。
DataNode
数据结点,负责将数据包读写到硬盘上。当客户端需要数据通讯时,先问NameNode获取存放到哪个DataNode,然后,客户端直接与DataNode进行通讯。
JobTracker
应用程序与Hadooop之间的纽带,代码提交到集群上,JobTracker将会确定执行计划,包括决定处理哪些文件,为不同的任务分配节点以及监察所有任务的运行,如果任务失败,JobTracker将会自动重启,但分配的节点可能会不同。
TaskTracker
负责执行由JobTracker分配的单项任务,虽然单个结点上只有一个TaskTracker,但可以利用多个JVM(Java虚拟机)并行处理多个Map或reduce任务。
网友评论