HADOOP入门详解
- 格式:doc
- 大小:2.48 MB
- 文档页数:17
第6章 HADOOP 第6章 HADOOP 6.1 Hadoop三节点集群环境搭建 6.1.1 Hadoop集群概念 hadoop集群:通过在各个物理节点上安装这个小软件,然后将其运行起来,就是一个hadoop分布式集群。可以通过虚拟机来实施集群环境来模拟物理节点。
6.1.2 集群环境搭建前提条件 电脑配置:需在4G,最好8G、16G。 前提条件:安装Vmware,并安装三台linux系统(可通过复制实现安装)。 三个节点:按照hadoop集群的基本要求,其中一个是master节点,主要是用于运行hadoop程序中的namenode、secondorynamenode和jobtracker任务。用外两个节点均为slave节点,其中一个是用于冗余目的,如果没有冗余,就不能称之为hadoop了,所以模拟hadoop集群至少要有3个节点,如果电脑配置非常高,可以考虑增加一些其它的节点。slave节点主要将运行hadoop程序中的datanode和tasktracker任务。
6.1.3 安装Hadoop 1> 为三个节点主机重命名(因为,若系统是复制的,那么它们会有相同的名字,所以要重命名) 文件系统->etc/sysconfig/中的network文件打开,修改其中的HOSTNAME,如:
重启电脑即可(可分别命名为master、salve1、salve2)。 2> ip地址的配置,以便能够访问。 右键网络连接->属性:
配置->配置: 第6章 HADOOP 双击第二个: 对“静态设置的IP地址”中的d/s进行配置。修改保存后,激活即可(重启)。 3> 建立hadoop组和zhm用户(三个节点上建立相同的用户名,并设计zhm密码)
普通用户如何具有admin的权限? 4> 配置SSH免密码连接 SSH主要通过RSA算法来产生公钥与私钥,在数据传输过程中对数据进行加密来保障数 据的安全性和可靠性,公钥部分是公共部分,网络上任一节点均可以访问,私钥主要用于对数据进行加密,以防他人盗取数据。总而言之,这是一种非对称算法,想要破解还是非常有难度的。Hadoop集群的各个节点之间需要进行数据的访问,被访问的节点对于访问用户节点的可靠性必须进行验证,hadoop采用的是ssh的方法通过密钥验证及数据加解密的方式进行远程安全登录操作,当然,如果hadoop对每个节点的访问均需要进行验证,其效率将会大大降低,所以才需要配置SSH免密码的方法直接远程连入被访问节点,这样将大大提高访问效率。 Step1: 首先,master节点上产生公私密钥: 回车(三四个回车)后:
以上命令是产生公私密钥,产生目录在用户主目录下的.ssh目录中,如下: 第6章 HADOOP Id_rsa.pub为公钥,id_rsa为私钥,紧接着将公钥文件复制成authorized_keys文件,这个步骤是必须的,过程如下:
其次,在其它两个节点上,也做上述操作。 Step2:单击回环SSH免密码登陆测试
显示信息可能不同,一般有|“Last login”等信息。能不输密码就登陆说明到目前位置是成功的。 Step3:master通过SSH免密码登录其它节点。 为实现该功能,需要将master节点的公钥信息复制到slave节点的公钥文件中。首先,slave1系统中终端,进入.ssh文件下:
然后,salve1通过scp命令远程登陆master节点, 复制master的公钥文件到当前目录下,即:
接着,将master节点的公钥文件追加到authorized_keys文件中,即: 第6章 HADOOP 接下来,测试。master节点中做如下操作:
再执行一次“ssh node1”或“ssh salve1”,若不要求输入“yes”,直接显示“last login”等信息,说明配置成功。 下一步,对salve2节点进行上述同样的操作,并测试,master是否能免密码登陆到salve2。 最后,对master节点也做上述操作。据说是真实物理节点时需要做这项工作,因为jobtracker有可能会分布在其它节点上,jobtracker有不存在master节点上的可能性。
测试,OK。 5> hadoop安装包 master节点上,将其解压到/home/zhm/hadoop下。 6> JDK/Hadoop路径配置 将JDK解压在/opt/jdk1.7.0*目录下。然后,修改/etc/profile文件,在最后添加:
然后,执行如下操作让配置立即生效,即: 该操作,要在每个节点上配置(其它节点的hadoop在后面会复制过来)。 若出现如下问题: 第6章 HADOOP 解决办法: 1)通过which java命令,发现java是/usr/bin下,而不是在咱自己放java的地方。即:
2)在profile文件中,修改PATH。将$JAVA_HOME/bin放在$PATH前。 7> hadoop配置文件(/hadoop/conf文件夹下 master节点) · core-site.xml
· hdfs-site.xml
· mapred-site.xml 第6章 HADOOP · hadoop-env.sh · masters · salves 8> 向其它节点复制hadoop,即: 这样其它节点也就装好hadoop了。 9> 格式化namenode(master机) 执行:hadoop namenode –format,若出现如下错误:
则执行:hdfs namenode –format。若出现如下错误:
则:一般是etc/profile中配置jdk和hadoop路径错误。如下位执行格式化: 第6章 HADOOP 上面不出现错误,并有“successfully formatted”,则格式化正确。 10> 启动hadoop(master节点) 执行:start-all.sh或start-dfs.sh、start-mapred.sh。即:
若出现“Temporary failure in name resolution”错误,即 可能原因:配置"/etc/hosts"局域网的DNS失效。 解决办法:1>其实,masters和salves文件有两种配置方式,即主机名方式和ip地址方式。即: 第6章 HADOOP 为保险起见,使用第二种。因为万一忘记配置"/etc/hosts"局域网的DNS失效,这样就会出现意想不到的错误,但是一旦IP配对,网络畅通,就能通过IP找到相应主机。 11> 验证hadoop是否成功启动 方法1:使用jps命令。即:
若不能识别jps命令,即: 解决办法:jps命令在jdk下的bin目录下的一个可执行文件。通过在etc/profile下加一行:
如果出现错误:“no datanode stop, no tasknode stop”。原因:重新格式化hadoop会出现该错误。修改办法:格式化前,将三个节点中的name和data中的文件都删除掉。 如果在查看Slave机器中发现"DataNode"和"TaskTracker"没有起来时,先查看一下日志的,如果是"namespaceID"不一致问题,采用下面的方法解决。 方法二:使用“hadoop dfsadmin –report”命令。查看Hadoop集群的状态。即: 第6章 HADOOP 12> 网页查看集群 http:192.10.5.76:50030
http:192.10.5.76:50070 第6章 HADOOP 6.2 三节点集群测试 参考:http://blog.csdn.net/ab198604/article/details/8250461 6.2.1 验证hadoop的hdfs文件系统功能是否正常 安装好Hadoop后,其hdfs文件系统是空的。Hdfs实现文件的管理操作。此时,查看hdfs目录,将出现“cannot access …”错误。如下:
从linux系统中将文件copy到hadoop的hdfs中。 首先,在linux系统中常见input(或file)文件夹,并在其中创建test1.txt和test2.txt(也可以创建多个),即: 第6章 HADOOP 接着,将这些文件上传到hdfs文件系统中,如下。 析:dfs程序带的一个参数,主要表示要操作的是dfs文件系统。-put表示要“上传”这个动作。./表示上传的源文件路径,该例中,表示要将file目录下的所有文件上传,所以是./。input表示上传文件的目的地址,即此时上传至hdfs的主目录下的input下。 显示hdfs文件系统目录:
显示input文件夹内容: 删除input文件夹: 6.2.2 验证hadoop的map-reduce功能是否正常 Map-reduce主要实现作业的处理。通过执行一个map-reduce程序,分析结果是否正确。本文通过hadoop自带的统计单词的WordCount.java进行测试。 1、执行后,正确页面。 第6章 HADOOP … … 第6章 HADOOP
该步若出现如下错误: 则修改salve结点的hosts文件。 执行完毕后,再次查看hdfs系统。此时,生成了output。
查看output中的内容: