三.关于安装hadoop时候的一些问题
这个就有的说了,很多人安装过程中只是按照教程来安装,不知道其中的一些步骤是什么意思,甚至很多都是照搬,连主机名都没有改。安装hadoop大概分为这么几步:
1.解压hadoop安装包
2.配置conf文件夹的配置文件(这个仅在hadoop0.20.2版本下讨论,之后版本文件的安装目录有修改)
3.格式化HDFS
4.启动脚本
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 配置文件中的
<name>dfs.name.dir</name>
<name>dfs.data.dir</name>
这两个配置文件中设置的文件夹,每格式化一次,都会生成一个namenodeID,存在 <name>dfs.data.dir</name> 中设置的文件夹中的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没有连接上。