欢迎光临
我们一直在努力

关于hadoop平台搭建的一些常见问题总结

刚开始团队搞hadoop遇到问题不断,现在把当初的一些总结分享一下。

首先自然要从搭建平台开始,说实话当初自己搞得时候光弄这个平台就搞了半天,也确实是个麻烦的事情,从刚开始的只会按照教程搭建到现在的已经可以熟练的搭建一个平台,说实话,没有把这玩意搭个十几二十遍,没有把其中的每一个步骤都搞清楚,没有深入研究过hadoop的运行机制,还真玩不转。中间团队搭建的时候真的是各种搭建各种问题,下面就先总结以下部分。

一.首先搭建hadoop我分为这么几个步骤:(所有问题都以hadoop0.20.2版本为例)

 1.安装linux环境

2.创建hadoop用户组和hadoop用户(这步也可以省略,当然是为了以后跑集群方便) 

3.安装jdk 

4.安装ssh服务 

5.安装hadoop

其中,我认为容易卡住的几个部分是第一,第三,就是安装linux和安装jdk的时候,首先我们为了以后跑集群比较方便,就用的是双系统装Ubuntu,当初装这个双系统搞得问题百出。 1.Ubuntu有个最简单的wubi安装,就是像安装软件一样一键安装,一键卸载,但是这种方法经团队验证存在众多缺陷,经常死机,只适合体验不适合开发更不适合跑集群,所以还是建议大家安装真正的双系统。

2.安装双系统的方法有很多,我就不一一介绍了,而且也介绍不完毕竟不是专门研究这个的,我们集体用的是window7下的硬盘安装,http://www.linuxidc.com/Linux/2013-10/91565.htm 这里是我们用的安装教程。如果只是用来开发的话我建议还是只要虚拟机的好,毕竟不会出那么多问题而且操作简单,内存2G以下的还是直接用虚拟机吧双系统跑不动的。

3. 安装好之后大家几个常识要注意下,第一就是用户组名,用户名,主机名的区别,用户组的是自己添加的,这里添加hadoop用户组是为了以后跑集群更好的区分,用户名就像root用户一样是可以设置权限等的用户,一个用户组可以有许多个用户。主机名是跑集群的时候用的,主机名和IP地址是对应的,不清楚自己ip地址的可以用ifconfig指令来查看自己的ip地址。

4.很多人对Ubuntu的依赖关系不明白什么意思,这么说吧典型的windows软件A,其需要辅助软件B才能运行,所以安装包就自带B。如果N个软件需要B,那么你的电脑可能就有N个B软件。典型的linux软件A,其需要辅助软件B,它不自带,而是公用系统已有的(如果没有就要安装)。如果N个软件需要B,那么只需要一个就够了,所以才要包管理来为你自动解决这些关系

二.然后说说安装jdk的问题 

 1.首先我们用的是Ubuntu版本的Linux系统,Ubuntu自带会配置好jdk,没有的话可以输入指令 apt-get install sun-java6-jdk 来安装,默认路径是/etc/lib/jvm目录下。不过这种方法获得的jdk可能不是你想要的,你也可以自己去www.oracle.com官网下载jdk(java原先是sun公司的产品,但是sun被oracle收购了),最新的是jdk8的,jdk6的好像已经被归档了。但是你直接在搜索栏输入你要的jdk版本比如jdk-6u5-linux-i586.bin就能找到。 

 2.这里大家可能会遇到后缀名的问题,就是.rmp.bin和.bin的问题,这么说吧,例如jdk-1_5_0_16-linux-i586-rpm.bin 运行后会解压出来一个rpm包,可用rpm -iUh命令安装。 jdk-1_5_0_16-linux-i586.bin 运行后会直接把所有文件解压到当前目录的jdk子目录下。 所以建议大家还是直接下载.bin的文件,记得jdk一定要是Linux下的才行。

3.在linux下安装jdk的方法其实很简单,首先解压,然后修改/etc/profile下的jdk路径,最后用指令 java -version检验安装是否成功就行,其中注意的几点,首先解压时会遇到权限问题,比如你解压jdk-6u5-linux-i586.bin,先输入chmod +x jdk-6u5-linux-i586.bin给所有用户可执行权限,之后输入指令./jdk-6u5-linux-i586.bin就可以解压成功了。 

 4.解压的时候还有可能出现这样的问题.:./jdk-6u30-linux-i586.bin: 113: ./install.sfx.3631: not found。Failed to extract the files. Please refer to the Troubleshooting section ofthe Installation Instructions on the download page for more information这是机器字长和jdk版本不匹配导致的,我的机子如果是64位的系统,然而选择了i586的jdk。就会出现问题,可以在Ubuntu输入指令 sudo uname -a来查看自Ubuntu的位数。 三.关于安装hadoop时候的一些问题 这个就有的说了,很多人安装过程中只是按照教程来安装,不知道其中的一些步骤是什么意思,甚至很多都是照搬,连主机名都没有改。安装hadoop大概分为这么几步:1.解压hadoop安装包2.配置conf文件夹的配置文件(这个仅在hadoop0.20.2版本下讨论,之后版本文件的安装目录有修改)3.格式化HDFS4.启动脚本。

5.用jps指令和浏览器查看进程是否运行。 这里出问题的一般是在第二步和第五步,第二步很多人没弄懂每个配置文件配置的东西,只是复制,很容易出错,第五步经常会少了几个进程。 (1)配置文件的问题:这个问题比较多很多人没弄懂这些配置文件具体是干嘛的,内容比较多就不在这里详细叙述,我们会另外弄一篇博客来介绍。 (2)安装hadoop的时候先是解压安装包,这里我们以hadoop0.20.2.tar.gz版本为例,解压之后会出现一个hadoop0.20.2的文件夹,我们为了方便以后终端打开,把这个文件夹改名下,就改成hadoop,指令是 sudo mv hadoop0.20.2 hadoop (3)很多人在后面的安装和运行中都会出现权限问题,就像运行脚本start-all.sh的时候总会出现权限不够的问题,必须要切换到root用户才能运行,这里我们可以用这个指令 sudo chown -R 用户名:用户组名 文件夹名 这个指令的意思是把一个文件夹的所有者换成指定的用户,这样我们就可以用当前用户来对hadoop文件夹进行操作了。 (4)之后就是进入conf文件夹来配置hadoop的配置文件了,这里问题比较多,我们另出一篇博客来叙述。 (5)配置完配置文件之后就可以启动进程看看hadoop环境搭建好了没有了。首先就是要先格式化,这个格式化的问题也让我们团队出了许多问题: 1.格式化的指令是 bin/hadoop namenode -format 这个指令是bin目录下hadoop脚本中设置的。 2.格式化是格式hdfs,所以最重要的是格式conf/hdfs-site.xml 配置文件中的dfs.name.dir和dfs.data.dir这两个配置文件中设置的文件夹,每格式化一次,都会生成一个namenodeID,存在dfs.data.dir中设置的文件夹中的current文件夹中的VERSION文件中。 3.有时候刚开机的时候格式化不成功,是因为那时候HDFS有个安全时间,这个是hdfs的安全机制决定的,这段时间是hdfs来验证备份blocks是否达到阀值的时间,只有过了这个时间才能进行格式化。 (6)格式化之后就是启动进程了,直接进入bin目录,输入指令./start-all.sh启动脚本就行,之后用jps指令,一般会出现5或6个进程。

这时候一般会出现这么几个问题:

1.输入jps指令的时候显示指令无效,这是因为jps指令不是linux下的指令,是jdk目录中的bin目录下的指令,用来查看java进程,无效的话可以去看看此目录下有没有jps指令脚本,没有的话就代表你当前安装的jdk没有这个指令,有时候有jdk指令但是依旧无效,这时候你可以编辑 /etc/profile文件,将jdk的bin目录加到PATH这个环境变量里,再source /etc/profile以后就能直接执行jps了。

2.Namenode进程没启动,一般是因为你没有格式化,这时候一般再格式化一遍就可以了。

3.Datenode没有启动,这第一可能是因为多次格式化的问题,这是因为每次格式化的时候会重新创建一个NamenodeID,而/tmp/dfs/data下包含了上次格式化的NamenodeID,hadoop namenode –format会清空namenode下的数据,但是不能同时清空datanode的数据,所以格式化前,先将所有的tmp清空。第二可能是没有网络的原因导致datanode没有连接上。

    原文作者:龙少侠
    原文地址: https://www.jianshu.com/p/75a9e6b54f46
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
未经允许不得转载:后端教程 » 关于hadoop平台搭建的一些常见问题总结