hadoop (二)解读Hello World

hadoop (二)解读Hello World

http://www.cnblogs.com/zjfstudio/p/3861373.html

解读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则提供了一个统计的交互接口,操作多台主机中文件系统。

image

MAPREDUCE 分布式计算

举个栗子:比如现在你有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任务。

hadoop命令

image

你可能感兴趣的:(hadoop (二)解读Hello World)