初识Hadoop及其名词解释---Hadoop学习(1),hadoop---hadoop
今天开始学习hadoop的基本机制和基础知识,之前也迷迷糊糊在Ubuntu上配置过hadoop但是根本不懂很多配置参数和操作的原因,所以此次学习旨在真正地认识hadoop以及会它的一些用法。至少要知道我们用的所谓分布式计算工具,到底是什么,又由什么组成?用的书是《Hadoop基本教程》,感觉作者写的详细又不难懂。
1.元素组成
(1).HDFS(Hadoop Distributed FIle Sustem):即hadoop的分布式文件系统,以最小64MB的数据块存储文件,其中每一个存储节点上都有一个DataNode进程,由NameNode来进行协调(稍后会说到NameNode和DataNode这类Hadoop中节点名称的功能和解释)。
(2)MapReduce:Map是映射的意思,Reduce则可翻译为缩减。由此可知这个技术分为两个操作,map和reduce。简单来说,map将键值对形式的数据重新组合成新的键值对,而reduce 函数用来对键值对列表进行汇总。MapReduce使用的是分而治之的思路。
(3)hadoop上的节点
1.NameNode:NameNode是HDFS上的主节点,用于调度作业和移动数据块。
2.DataNode:DataNode是HDFS上的进程,负责从NameNode上接受指令。
3.JobTracker:是Mapreduce上的主节点,也是用来调度作业。
4.JobTask:是Mapreduce上的进程,负责接受指令和报告状况。
总之,主节点作用主要是调度和分发数据块,而进程的作用是负责报告节点机器的状态和接受主节点的调度,Hadoop上的主要四个节点的作用就是如此。
2.Hadoop的三种模式
(1).本地独立模式:是hadoop的默认配置模式,hadoop中的四个组件节点都运行在本机的同一个java进程中。
(2)伪分布模式:四个组件节点都在本机主机上分别有自己的Java进程,相当于在一台机器上完成了分布式功能的配置,各个进程间通过套接字进行通信。
(3).完全分布式模式:由一个通用工作机和其他组件专用的主机组成。
3.Hadoop伪分布模式的配置
关于前面所说的本地独立模式的配置,hadoop的默认配置就是本地模式,所以只要先安装好ssh,pdsh(parallel distributed shell)这是一个分布式运维工具,然后配置好jdk和hadoop的classpath,就可以进行基本的测试了。下面的操作请看详细而又精炼的hadoop官方网站,附上Apache Hadoop链接.
下面开始伪分布式模式的配置,《Hadoop基础》教程上提到使用的是1.0.4版本的,而我用的是2.6.0版本进行尝试。
首先,要找到在hadoop-2.6.0/etc/hadoop下的三个文件:core-site.xml,hdfs-site.xml,mapred-site.xml.template.
将三个文件进行如下配置:
core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
mapred-site.xml.template:
<configuration>
<property>
<name>mapred.job.tracker</name>
</property>
</configuration>
解释:fs.default.name:保存NameNode的位置,可见我的Hadoop文件放在~目录下。
dfs.replication:每个HDFS数据块需要复制的次数。
mapred.job.tracker:保存JobTracker的位置。
下一步,修改HDFS根目录:我们需要HDFS在本地保存全部数据的位置
$ mkdir ~/Hadoop-save
修改本地HDFS文件的权限,确保任何用户可在此目录写入
$chmod 777 ~/Hadoop-save
官网还是很靠谱的,之后格式化NameNode
bin/hdfs namenode -format
这里的格式化就要是2.6.0版本的hdfs路径,而不能是1.0.4版本的。
开始启动NameNode和DataNode:
sbin/start-dfs.sh
这里还是稍微记一下吧,其实在一开始启动的过程中遇到了一些问题 :Call to localhost/127.0.0.1:9000 failed on connection exception
在启动和hdfs下创建文件夹时,一直虚拟机一直抛出连接拒绝(Connection Refuse),最后发现是NameNode的设置问题,一开始我在core-site.xml指定了NameNode的路径,其实是不需要的,因为在前面格式化的时候NameNode的配置会自动完成,这是看到另外一个求助贴的老兄说的,再次十分感谢。
还有抛出异常时收获的一个网址:Hadoop Wiki
也许以后会用到
虽然我还没有深入挖掘下去,但是先这样吧,配置好了再说吧233。
接下来键入
$ jps
查看一下Java虚拟机上跑的进程。
5205 NameNode
6470 Jps
3687 DataNode
5467 SecondaryNameNode
然后就启动完成啦,好不容易(擦汗)。
接下来就按照官网的步骤,测试wordcount程序吧。
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'
这里面好像是有几个pdsh命令的应用,要赶快熟悉起来呀。
好了,第一次学习先到这里,下一次的学习内容是MapReduce的理解和着手一些基本的MapReduce程序。惊慌,还是要很多的算法基础的,果然我的代码能力还是不行,要加油!
以上内容是我学习Hadoop的个人学习笔记,如果发现大量扯淡内容(?)请速速联系我,因为我没注意到啊。。。。