centos安装配置hadoop超详细过程

上传人:无*** 文档编号:82991131 上传时间:2022-04-30 格式:DOC 页数:51 大小:4.12MB
收藏 版权申诉 举报 下载
centos安装配置hadoop超详细过程_第1页
第1页 / 共51页
centos安装配置hadoop超详细过程_第2页
第2页 / 共51页
centos安装配置hadoop超详细过程_第3页
第3页 / 共51页
资源描述:

《centos安装配置hadoop超详细过程》由会员分享,可在线阅读,更多相关《centos安装配置hadoop超详细过程(51页珍藏版)》请在装配图网上搜索。

1、word1、集群部署介绍1.1Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统HDFS,HadoopDistributedFilesystem和MapReduceGoogleMapReduce的开源实现为核心的Hadoop为用户提供了系统底层细节透明的分布式根底架构。对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。一个HDFS集群是由一个NameNode和假设干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的

2、数据。MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。从上面的介绍可以看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实

3、现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的根底上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。环境说明集群中包括4个节点:1个Master,3个Salve,节点之间局域网连接,可以相互ping通,具体集群信息可以查看Hadoop集群第2期。节点IP地址分布如下:机器名称IP地址四个节点上均是CentOS6.0系统,并且有一个一样的用户hadoop。Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个

4、Salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以与任务的执行。其实应该还应该有1个Master机器,用来作为备用,以防止Master服务器宕机,还有一个备用马上启用。后续经验积累一定阶段后补上一台备用Master机器。网络配置Hadoop集群要按照表格所示进展配置,我们在Hadoop集群第1期的CentOS6.0安装过程就按照提前规划好的主机名进展安装和配置。如果实验室后来人在安装系统时,没有配置好,不要紧,没有必要重新安装,在安装完系统之后仍然可以根据后来的规划对机器的主机名进展修改。下面的例子我们将以Master机器为例,即主机名为Master.Had

5、oop,IP为192.168.1.2进展一些主机名配置的相关操作。其他的Slave机器以此为依据进展修改。1查看当前机器名称用下面命令进展显示机器名称,如果跟规划的不一致,要按照下面进展修改。hostname上图中,用hostname查Master机器的名字为Master.Hadoop,与我们预先规划的一致。2修改当前机器名称假定我们发现我们的机器的主机名不是我们想要的,通过对/etc/sysconfig/network文件修改其中HOSTNAME后面的值,改成我们规划的名称。这个/etc/sysconfig/network文件是定义hostname和是否利用网络的不接触网络设备的对系统全体定

6、义的文件。设定形式:设定值=值/etc/sysconfig/network的设定项目如下:NETWORKING是否利用网络GATEWAY默认网关IPGATEWAYDEV默认网关的接口名HOSTNAME主机名DOMAIN域名用下面命令进展修改当前机器的主机名备注:修改系统文件一般用root用户vim/etc/sysconfig/network通过上面的命令我们从/etc/sysconfig/network中找到HOSTNAME进展修改,查看内容如下:3修改当前机器IP假定我们的机器连IP在当时安装机器时都没有配置好,那此时我们需要对ifcfg-eth0文件进展配置,该文件位于/etc/sysco

7、nfig/network-scripts文件夹下。在这个目录下面,存放的是网络接口网卡的制御脚本文件控制文件,ifcfg-eth0是默认的第一个网络接口,如果机器中有多个网络接口,那么名字就将依此类推ifcfg-eth1,ifcfg-eth2,ifcfg-eth3,。这里面的文件是相当重要的,涉与到网络能否正常工作。设定形式:设定值=值设定项目项目如下:DEVICE接口名设备,网卡BOOTPROTOIP的配置方法static:固定IP,dhcpHCP,none:手动HWADDRMAC地址ONBOOT系统启动的时候网络接口是否有效yes/noTYPE网络类型通常是EthemetNETMASK网络

8、掩码IPADDRIP地址IPV6INITIPV6是否有效yes/noGATEWAY默认网关IP地址查看/etc/sysconfig/network-scripts/ifcfg-eth0内容,如果IP不复核,就行修改。如果上图中IP与规划不相符,用下面命令进展修改:vim/etc/sysconfig/network-scripts/ifcgf-eth0修改完之后可以用ifconfig进展查看。4配置hosts文件必须/etc/hosts这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应HostName和IP用的。当用户在进展网络连接时,首先查找该文件,寻找对应主机名或

9、域名对应的IP地址。我们要测试两台机器之间知否连通,一般用ping机器的IP,如果想用ping机器的主机名发现找不见该名称的机器,解决的方法就是修改/etc/hosts这个文件,通过把LAN内的各主机的IP地址和HostName的一一对应写入这个文件的时候,就可以解决问题。例如:机器为Master.Hadoop:192.168.1.2对机器为Salve1.Hadoop:192.168.1.3用命令ping记性连接测试。测试结果如下:从上图中的值,直接对IP地址进展测试,能够ping通,但是对主机名进展测试,发现没有ping通,提示unknownhost未知主机,这时查看Master.Hadoo

10、p的/etc/hosts文件内容。Slave1.Hadoop内容,故而本机器是无法对机器的主机名为Slave1.Hadoop解析。在进展Hadoop集群配置中,需要在/etc/hosts文件中添加集群中所有机器的IP与主机名,这样Master与所有的Slave机器之间不仅可以通过IP进展通信,而且还可以通过主机名进展通信。所以在所有的机器上的/etc/hosts文件末尾中都要添加如下内容:用以下命令进展添加:vim/etc/hosts添加结果如下:现在我们在进展对机器为Slave1.Hadoop的主机名进展ping通测试,看是否能测试成功。从上图中我们已经能用主机名进展ping通了,说明我们刚

11、刚添加的内容,在局域网内能进展DNS解析了,那么现在剩下的事儿就是在其余的Slave机器上进展一样的配置。然后进展测试。备注:当设置SSH无密码验证后,可以scp进展复制,然后把原来的hosts文件执行覆盖即可。所需软件1JDK软件下载地址:JDK版本:2Hadoop软件下载地址:Hadoop版本:VSFTP上传在Hadoop集群第3期讲了VSFTP的安装与配置,如果没有安装VSFTP可以按照该文档进展安装。如果安装好了,就可以通过软件把我们下载的JDK6.0和Hadoop1.0软件上传到服务器上。刚刚我们用一般用户hadoop通过FlashFXP软件把所需的两个软件上传了跟目下,我们通过命令

12、查看下一下是否已经上传了。从图中,我们的所需软件已经准备好了。2、SSH无密码验证配置Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSHSecureShell来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。安装和启动SSH协议在Hadoop集群第1期安装CentOS6.0时,我们选择了一些根本安

13、装包,所以我们需要两个服务:ssh和rsync已经安装了。可以通过下面命令查看结果显示如下:rpmqa|grepopensshrpmqa|greprsync假设没有安装ssh和rsync,可以通过下面命令进展安装。yuminstallssh安装SSH协议yuminstallrsyncrsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件servicesshdrestart启动服务确保所有的服务器都安装,上面命令执行完毕,各台机器之间可以通过密码验证相互登。配置Master无密码登录所有Salve1SSH无密码原理MasterNameNode|JobTracker作为客户

14、端,要实现无密码公钥认证,连接到服务器SalveDataNode|Tasktracker上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进展加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进展连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。2Master机器上生成密码对在Master节点上

15、执行以下命令:ssh-keygentrsaP这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在/home/hadoop/.ssh目录下。查看/home/hadoop/下是否有.ssh文件夹,且.ssh文件下是否有两个刚生产的无密码密钥对。接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。cat/.ssh/authorized_keys在验证前,需要做两件事儿。第一件事儿是修改文件authorized_keys权限权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能,另

16、一件事儿是用root用户设置/etc/ssh/sshd_config的内容。使其无密码登录有效。1修改文件authorized_keyschmod600/.ssh/authorized_keys备注:如果不进展设置,在验证时,扔提示你输入密码,在这里花费了将近半天时间来查找原因。在网上查到了几篇不错的文章,把作为Hadoop集群_第5期副刊_JDK和SSH无密码配置来帮助额外学习之用。2设置SSH配置用root用户登录服务器修改SSH配置文件/etc/ssh/sshd_config的如下内容。RSAAuthenticationyes#启用RSA认证PubkeyAuthenticationyes

17、#启用公钥私钥配对认证方式AuthorizedKeysFile.ssh/authorized_keys#公钥文件路径和上面生成的文件同设置完之后记得重启SSH服务,才能使刚刚设置有效。servicesshdrestart退出root登录,使用hadoop普通用户验证是否成功。sshlocalhost从上图中得知无密码登录本级已经设置完毕,接下来的事儿是把公钥复制所有的Slave机器上。使用下面的命令格式进展复制公钥:scp远程用户名远程服务器IP:/例如:scphadoop192.168.1.3:/上面的命令是复制文件到服务器IP为的用户为hadoop的/home/hadoop/下面。下面就针

18、对IP为192.168.1.3的Slave1.Hadoop的节点进展配置。从上图中我们得知,已经把文件id_rsa.pub传过去了,因为并没有建立起无密码连接,所以在连接时,仍然要提示输入输入Slave1.Hadoop服务器用户hadoop的密码。为了确保确实已经把文件传过去了,用SecureCRT登录Slave1.Hadoop:192.168.1.3服务器,查看/home/hadoop/下是否存在这个文件。从上面得知我们已经成功把公钥复制过去了。2在/home/hadoop/下创建.ssh文件夹这一步并不是必须的,如果在Slave1.Hadoop的/home/hadoop已经存在就不需要创建

19、了,因为我们之前并没有对Slave机器做过无密码登录配置,所以该文件是不存在的。用下面命令进展创建。备注:用hadoop登录系统,如果不涉与系统文件修改,一般情况下都是用我们之前建立的普通用户hadoop进展执行命令。mkdir/.ssh然后是修改文件夹.ssh的用户权限,把他的权限修改为700,用下面命令执行:chmod700/.ssh备注:如果不进展,即使你按照前面的操作设置了authorized_keys权限,并配置了/etc/ssh/sshd_config,还重启了sshd服务,在Master能用sshlocalhost进展无密码登录,但是对Slave1.Hadoop进展登录仍然需要输

20、入密码,就是因为.ssh文件夹的权限设置不对。这个文件夹.ssh在配置SSH无密码登录时系统自动生成时,权限自动为700,如果是自己手动创建,它的组权限和其他权限都有,这样就会导致RSA无密码远程登录失败。比照上面两X图,发现文件夹.ssh权限已经变了。3追加到授权文件authorized_keys追加到Slave1.Hadoop的授权文件authorized_keys中去。使用下面命令进展追加并修改authorized_keys文件权限:cat/.ssh/authorized_keyschmod600/.ssh/authorized_keys4用root用户修改/etc/ssh/sshd_c

21、onfig具体步骤参考前面Master.Hadoop的设置SSH配置,具体分为两步:第1是修改配置文件;第2是重启SSH服务。当前面的步骤设置完毕,就可以使用下面命令格式进展SSH无密码登录了。ssh远程服务器IP从上图我们主要3个地方,第1个就是SSH无密码登录命令,第2、3个就是登录前后后面的机器名变了,由Master变为了Slave1,这就说明我们已经成功实现了SSH无密码登录了。最后记得把/home/hadoop/目录下的id_rsa.pub文件删除掉。rmr到此为止,我们经过前5步已经实现了从Master.Hadoop到Slave1.HadoopSSH无密码登录,下面就是重复上面的步

22、骤把剩余的两台Slave2.Hadoop和Slave3.HadoopSlave服务器进展配置。这样,我们就完成了配置Master无密码登录所有的Slave服务器。配置所有Slave无密码登录Master和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的.ssh文件夹下的authorized_keys中,记得是追加。为了说明情况,我们现在就以Slave1.Hadoop无密码登录Master.Hadoop为例,进展一遍操作,也算是巩固一下前面所学知识,剩余的Slave2.Hadoop和Slave3.Hadoop就按照这个示例进展就可以了。首先创建Slave1

23、.Hadoop自己的公钥和私钥,并把自己的公钥追加到authorized_keys文件中。用到的命令如下:ssh-keygentrsaPcat/.ssh/authorized_keys接着是用命令scp复制Slave1.Hadoop的公钥id_rsa.pub到Master.Hadoop的/home/hadoop/目录下,并追加到Master.Hadoop的authorized_keys中。1在Slave1.Hadoop服务器的操作用到的命令如下:scphadoop192.168.1.2:/2在Master.Hadoop服务器的操作用到的命令如下:cat/.ssh/authorized_keys

24、然后删除掉刚刚复制过来的id_rsa.pub文件。最后是测试从Slave1.Hadoop到Master.Hadoop无密码登录。从上面结果中可以看到已经成功实现了,再试下从Master.Hadoop到Slave1.Hadoop无密码登录。至此Master.Hadoop与Slave1.Hadoop之间可以互相无密码登录了,剩下的就是按照上面的步骤把剩余的Slave2.Hadoop和Slave3.Hadoop与Master.Hadoop之间建立起无密码登录。这样,Master能无密码验证登录每个Slave,每个Slave也能无密码验证登录到Master。3、Java环境安装所有的机器上都要安装JD

25、K,现在就先在Master服务器安装,然后其他服务器按照步骤重复进展即可。安装JDK以与配置环境变量,需要以root的身份进展。安装JDK首先用root身份登录Master.Hadoop后在/usr下创建java文件夹,再把用FTP上传到/home/hadoop/下的jdk-6u31-linux-i586.bin复制到/usr/java文件夹中。mkdir/usr/javacp/home/hadoop/usr/java接着进入/usr/java目录下通过下面命令使其JDK获得可执行权限,并安装JDK。chmod+x按照上面几步进展操作,最后点击Enter键开始安装,安装完会提示你按Enter键

26、退出,然后查看/usr/java下面会发现多了一个名为文件夹,说明我们的JDK安装完毕,删除jdk-6u31-linux-i586.bin文件,进入下一个配置环境变量环节。配置环境变量编辑/etc/profile文件,在后面添加Java的JAVA_HOME、CLASSPATH以与PATH内容。1编辑/etc/profile文件vim/etc/profile2添加Java环境变量在/etc/profile文件的尾部添加以下内容:#setjavaenvironmentexportexportexportCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/

27、libexportPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin或者#setjavaenvironmentexportexportCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexportPATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin以上两种意思一样,那么我们就选择第2种来进展设置。3使配置生效保存并退出,执行下面命令使其配置立即生效。source/etc/profile验证安装成功配置完毕并生效后,用下面命令判断是否成功。java-version从上图中

28、得知,我们以确定JDK已经安装成功。安装剩余机器这时用普通用户hadoop通过下面命令格式把Master.Hadoop文件夹/home/hadoop/的JDK复制到其他Slave的/home/hadoop/下面,剩下的事儿就是在其余的Slave服务器上按照上图的步骤安装JDK。scp远程用户名远程服务器IP:/或者scp远程用户名远程服务器IP:/备注:代表当前用户的主目录,当前用户为hadoop,所以代表/home/hadoop。例如:把JDK从Master.Hadoop复制到Slave1.Hadoop的命令如下。scp/jdk-6u31-linux-i586hadoop192.168.1.

29、3:/然后查看Slave1.Hadoop的/home/hadoop查看是否已经复制成功了。从上图中得知,我们已经成功复制了,现在我们就用最高权限用户root进展安装了。其他的与这个一样。4、Hadoop集群安装所有的机器上都要安装hadoop,现在就先在Master服务器安装,然后其他服务器按照步骤重复进展即可。安装和配置hadoop需要以root的身份进展。安装hadoop首先用root用户登录Master.Hadoop机器,查看我们之前用FTP上传至/home/Hadoop上传的。接着把复制到/usr目录下面。cp/usr下一步进入/usr目录下,用下面命令把进展解压,并将其命名为hado

30、op,把该文件夹的读权限分配给普通用户hadoop,然后删除安装包。cd/usr#进入/usr目录tarzxvf#解压安装包mvhadoop#将hadoop-1.0.0文件夹重命名hadoopchownRhadoop:hadoophadoop#将文件夹hadoop读权限分配给hadoop用户rmrf#删除安装包解压后,并重命名。把/usr/hadoop读权限分配给hadoop用户非常重要删除安装包最后在/usr/hadoop下面创建tmp文件夹,把Hadoop的安装路径添加到/etc/profile中,修改/etc/profile文件配置java环境变量的文件,将以下语句添加到末尾,并使其有效

31、:#sethadooppathexportHADOOP_HOME=/usr/hadoopexportPATH=$PATH:$HADOOP_HOME/bin1在/usr/hadoop创建tmp文件夹mkdir/usr/hadoop/tmp2配置/etc/profilevim/etc/profile配置后的文件如下:3重启/etc/profilesource/etc/profile配置hadoop该文件位于/usr/hadoop/conf目录下。在文件的末尾添加下面内容。#setjavaenvironmentexportHadoop配置文件在conf目录下,之前的版本的配置文件主要是Hadoop-

32、default.xml和Hadoop-site.xml。由于Hadoop开展迅速,代码量急剧增加,代码开发分为了core,hdfs和map/reduce三局部,配置文件也被分成了三个core-site.xml、hdfs-site.xml、mapred-site.xml。core-site.xml和hdfs-site.xml是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件。2配置文件修改Hadoop核心配置文件core-site.xml,这里配置的是HDFS的地址和端口号。hadoop.tmp.dir/usr/hado

33、op/tmp备注:请先在/usr/hadoop目录下建立tmp文件夹Abaseforothertemporarydirectories.fs.default.namehdfs:/:9000备注:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被干掉,必须重新执行format才行,否如此会出错。用下面命令进展编辑:编辑结果显示如下:3配置文件修改Hadoop中HDFS的配置,配置的备份方式默认为3。dfs.replication1(备注:replication是数据副本数量,默认为3,salve少于3台就会报错)

34、用下面命令进展编辑:编辑结果显示如下:4配置文件修改Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。mapred.job.tracker:9001用下面命令进展编辑:编辑结果显示如下:5配置masters文件有两种方案:1第一种2第二种为保险起见,启用第二种,因为万一忘记配置/etc/hosts局域网的DNS失效,这样就会出现意想不到的错误,但是一旦IP配对,网络畅通,就能通过IP找到相应主机。用下面命令进展修改:编辑结果显示如下:6配置slaves文件Master主机特有有两种方案:1第一种去掉localhost,每行只添加一个主机名,把剩余的Slave

35、主机名都填上。例如:添加形式如下2第二种去掉localhost,参加集群中所有Slave机器的IP,也是每行一个。例如:添加形式如下原因和添加masters文件一样,选择第二种方式。用下面命令进展修改:编辑结果如下:现在在Master机器上的Hadoop配置就完毕了,剩下的就是配置Slave机器上的Hadoop。一种方式是按照上面的步骤,把Hadoop的安装包在用普通用户hadoop通过scp复制到其他机器的/home/hadoop目录下,然后根据实际情况进展安装配置,除了第6步,那是Master特有的。用下面命令格式进展。备注:此时切换到普通用户hadoopscphadoop服务器IP:/例

36、如:从Master.Hadoop到Slave1.Hadoop复制Hadoop的安装包。另一种方式是将Master上配置好的hadoop所在文件夹/usr/hadoop复制到所有的Slave的/usr目录下实际上Slave机器上的slavers文件是不必要的,复制了也没问题。用下面命令格式进展。备注:此时用户可以为hadoop也可以为rootscp-r/usr/hadooproot服务器IP:/usr/例如:从Master.Hadoop到Slave1.Hadoop复制配置Hadoop的文件。上图中以root用户进展复制,当然不管是用户root还是hadoop,虽然Master机器上的/usr/h

37、adoop文件夹用户hadoop有权限,但是Slave1上的hadoop用户却没有/usr权限,所以没有创建文件夹的权限。所以无论是哪个用户进展拷贝,右面都是root机器IP格式。因为我们只是建立起了hadoop用户的SSH无密码连接,所以用root进展scp时,扔提示让你输入Slave1.Hadoop服务器用户root的密码。查看Slave1.Hadoop服务器的/usr目录下是否已经存在hadoop文件夹,确认已经复制成功。查看结果如下:从上图中知道,hadoop文件夹确实已经复制了,但是我们发现hadoop权限是root,所以我们现在要给Slave1.Hadoop服务器上的用户hadoo

38、p添加对/usr/hadoop读权限。以root用户登录Slave1.Hadoop,执行下面命令。chown-Rhadoop:hadoop用户名:用户组hadoop文件夹接着在Slave1.Hadoop上修改/etc/profile文件配置java环境变量的文件,将以下语句添加到末尾,并使其有效source/etc/profile:#sethadoopenvironmentexportHADOOP_HOME=/usr/hadoopexportPATH=$PATH:$HADOOP_HOME/bin如果不知道怎么设置,可以查看前面Master.Hadoop机器的/etc/profile文件的配置,

39、到此为此在一台Slave机器上的Hadoop配置就完毕了。剩下的事儿就是照葫芦画瓢把剩余的几台Slave机器按照从Master.Hadoop到Slave1.Hadoop复制Hadoop的安装包。这个例子进展部署Hadoop。启动与验证1格式化HDFS文件系统在Master.Hadoop上使用普通用户hadoop进展操作。备注:只需一次,下次启动不再需要格式化,只需start-all.shhadoopnamenode-format某些书上和网上的某些资料中用下面命令执行。我们在看好多文档包括有些书上,按照他们的hadoop环境变量进展配置后,并立即使其生效,但是执行发现没有找见bin/hadoo

40、p这个命令。其实我们会发现我们的环境变量配置的是$HADOOP_HOME/bin,我们已经把bin包含进入了,所以执行时,加上bin反而找不到该命令,除非我们的hadoop坏境变量如下设置。#sethadooppathexportHADOOP_HOME=/usr/hadoopexportPATH=$PATH:$HADOOP_HOME:$HADOOP_HOME/bin这样就能直接使用bin/hadoop也可以直接使用hadoop,现在不管哪种情况,hadoop命令都能找见了。我们也没有必要重新在设置hadoop环境变量了,只需要记住执行Hadoop命令时不需要在前面加bin就可以了。从上图中知道

41、我们已经成功格式话了,但是美中不足就是出现了一个警告,从网上的得知这个警告并不影响hadoop执行,但是也有方法解决,详情看后面的常见问题FAQ。2启动hadoop在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭。serviceiptablesstop使用下面命令启动。执行结果如下:可以通过以下启动日志看出,首先启动namenode接着启动datanode1,datanode2,然后启动secondarynamenode。再启动jobtracker,然后启动tasktracker1,tasktracker2,。启动hadoop成功后,在Master中的tmp文件夹中

42、生成了dfs文件夹,在Slave中的tmp文件夹中均生成了dfs文件夹和mapred文件夹。查看Master中/usr/hadoop/tmp文件夹内容查看Slave1中/usr/hadoop/tmp文件夹内容。3验证hadoop1验证方法一:用jps命令在Master上用java自带的小工具jps查看进程。在Slave1上用jps查看进程。如果在查看Slave机器中发现DataNode和TaskTracker没有起来时,先查看一下日志的,如果是namespaceID不一致问题,采用常见问题FAQ6.2进展解决,如果是Noroutetohost问题,采用常见问题FAQ6.3进展解决。2验证方式二

43、:用hadoopdfsadmin-report用这个命令可以查看Hadoop集群的状态。Master服务器的状态:Slave服务器的状态网页查看集群1访问:192.168.1.2:500302访问:192.168.1.2:500705、常见问题FAQ关于Warning:$HADOOP_HOMEisdeprecated.hadoop1.0.0版本,安装完之后敲入hadoop命令时,老是提示这个警告:Warning:$HADOOP_HOMEisdeprecated.经查hadoop-1.0.0/bin/hadoop脚本和hadoop-config.sh脚本,发现脚本中对HADOOP_HOME的环境

44、变量设置做了判断,笔者的环境根本不需要设置HADOOP_HOME环境变量。解决方案一:编辑/etc/profile文件,去掉HADOOP_HOME的变量设定,重新输入hadoopfs命令,警告消失。解决方案二:编辑/etc/profile文件,添加一个环境变量,之后警告消失:exportHADOOP_HOME_WARN_SUPPRESS=1解决方案三:编辑hadoop-config.sh文件,把下面的if-fi功能注释掉。我们这里本着不动Hadoop原配置文件的前提下,采用方案二,在/etc/profile文件添加上面内容,并用命令source/etc/profile使之有效。1切换至root

45、用户2添加内容3重新生效解决nodatanodetostop问题当我停止Hadoop时发现如下信息:原因:每次namenodeformat会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenodeformat清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空tmp一下的所有目录。第一种解决方案如下:1先删除/usr/hadoop/tmprm-rf/usr/hadoop/tmp2创建/usr/hadoop/tmp文件夹mkdir/usr/hadoop/tmp3删除/tmp

46、下以hadoop开头文件rm-rf/tmp/hadoop*4重新格式化hadoophadoopnamenode-format5启动hadoop使用第一种方案,有种不好处就是原来集群上的重要数据全没有了。假设说Hadoop集群已经运行了一段时间。建议采用第二种。第二种方案如下:1修改每个Slave的namespaceID使其与Master的namespaceID一致。或者2修改Master的namespaceID使其与Slave的namespaceID一致。该namespaceID位于/usr/hadoop/tmp/dfs/data/current/VERSION文件中,前面蓝色的可能根据实际情

47、况变化,但后面红色是不变的。例如:查看Master下的VERSION文件本人建议采用第二种,这样方便快捷,而且还能防止误删。Slave服务器中datanode启动后又自动关闭查看日志发下如下错误。ERRORorg.apache.hadoop.hdfs.server.datanode.DataNode:java.io.IOException:Callto.failedonlocalexception:.NoRouteToHostException:Noroutetohost解决方案是:关闭防火墙serviceiptablesstop从本地往hdfs文件系统上传文件出现如下错误:INFOhdfs.

48、DFSClient:ExceptionincreateBlockOutputStreamjava.io.IOException:BadconnectackwithfirstBadLinkINFOhdfs.DFSClient:AbandoningblockWARNhdfs.DFSClient:DataStreamerException:java.io.IOException:Unabletocreatenewblock.解决方案是:1关闭防火墙serviceiptablesstop2禁用selinux编辑/etc/selinux/config文件,设置SELINUX=disabled安全模式导致

49、的错误出现如下错误:org.apache.hadoop.dfs.SafeModeException:Cannotdelete.,Namenodeisinsafemode在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式完毕。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除局部数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。解决方案是:关闭安全模式hado

50、opdfsadmin-safemodeleave解决ExceededMAX_FAILED_UNIQUE_FETCHES出现错误如下:ShuffleError:ExceededMAX_FAILED_UNIQUE_FETCHES;bailing-out程序里面需要打开多个文件,进展分析,系统一般默认数量是1024,用ulimit-a可以看到对于正常使用是够了,但是对于程序来讲,就太少了。解决方案是:修改2个文件。1/etc/security/limits.confvim加上:softnofile102400hardnofile4096002/etc/pam.d/loginvim添加:session

51、required针对第一个问题我纠正下答案:这是reduce预处理阶段shuffle时获取已完成的map的输出失败次数超过上限造成的,上限默认为5。引起此问题的方式可能会有很多种,比如网络连接不正常,连接超时,带宽较差以与端口阻塞等。通常框架内网络情况较好是不会出现此错误的。解决Toomanyfetch-failures出现这个问题主要是结点间的连通不够全面。解决方案是:1检查/etc/hosts要求本机ip对应服务器名要求要包含所有的服务器ip+服务器名2检查.ssh/authorized_keys要求包含所有服务器包括其自身的publickey处理速度特别的慢出现map很快,但是reduc

52、e很慢,而且反复出现reduce=0%。解决方案如下:结合解决方案5.7,然后修改conf/hadoop-env.sh中的exportHADOOP_HEAPSIZE=4000OutOfMemoryError问题出现这种异常,明显是jvm内存不够得原因。解决方案如下:要修改所有的datanode的jvm内存大小。JavaXms1024m-Xmx4096m一般jvm的最大内存使用应该为总内存大小的一半,我们使用的8G内存,所以设置为4096m,这一值可能依旧不是最优的值。Namenodeinsafemode解决方案如下:bin/hadoopdfsadmin-safemodeleaveIO写操作出现问题infoPort=50075,ipcPort=50020):Gotexceptionwhileservingto/172.16.100.165:.SocketTimeoutException:480000millistimeoutwhilewaitingforchanneltobereadyforwrite.ch:java.nio.channels.SocketChannelconnectedlocal=/

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!