Hadoop 配置-启动 过程中遇到的问题
Hadoop开发需要最基本的Hadoop环境,在之后我会将过程中遇到的一系列问题分享一下,借鉴之。(持续更新中)
我这里搭的环境是 namenode 1台(192.168.0.2),datanode 3台(192.168.0.3,192.168.0.4,192.168.0.5)。
需要注意的问题:
0. 由于Linux的安全性比Windows管理的要严格的多,所以在配置Hadoop的时候所做的所有工作都在hadoop用户下进行,这个非常重要,会减少以后遇到的问题,很多问题都是没有Linux用户权限造成的,如果没有的话,要在root用户下使用 chown -R hadoop:hadoop dir 将dir文件夹改成hadoo用户(hadoop用户也即我搭建的系统hadoop用户)。这个非常重要!除了一些Linux系统配置文件编辑的时候和停止、启动一些系统服务(如防火墙)的时候需要root用户,其他的时候的操作要使用hadoop用户。重要!
1. SSH无密码登录一定要提前配置好,个人设置的是namenode和datanode之间都可以通过ssh无密码登录,而不仅仅是namenode登录datanode。
使用 ssh hadoop@192.168.0.3 (根据自己的配置来进行修改登录名和ip地址)来进行测试,看是否能进行无密码登录,这个ssh无密码登录一定要通过
2. 防火墙关闭。 service iptables stop
3. 格式化工作只需要namenode来做,datanode不能做这个工作(否则datanode是不可能启动起来的),格式化工作命令为: bin/hadoop namenode -format。
4. 可以通过一些命令来查看是否正确启动,而不是“认为”它启动成功了。
jps #Java的查看当前启动的线程。如果正常启动,datanode端通常会显示三个,分别是:jps、datanode和tasktracker
hadoop dfsadmin -report #在namenode端执行该命令查看已经启动的datanode和tasktracker
http://master:50070 和 http://master:500701 查看dfs和map-reduce的去年概况
5. 做实验不可能让电脑一直开着,晚上要关闭这个系统,个人尝试在关闭后是可以再次正常启动的,不过关闭顺序是:先stop-mapred.sh, 然后stop-dfs.sh, 然后再去关闭机器就OK了。
6. 遇到启动不起来其他slaves上的datanode和tasktracker问题时,需要:
删除主tmp文件夹下的所有内容(因为这个里面的/dfs/data/current/VERSION中的namespaceID在namenode进行重新格式化的时候会不统一,这样就不能通过namenode来启动这些datanode)
关闭防火墙 service iptables stop
然后启动就OK了
7. 最基本的配置只要完成对conf文件夹下的4个文件5处地方进行修改即可正常启动,如果启动遇到问题,你就是其他的问题,不是配置的问题。
hadoop-env.sh 修改JAVA_HOME;
core-site.xml 修改fs.default.name和hadoop.tmp.dir;(我的修改为:hdfs://192.168.0.2:9000和/usr/hadoop/tmp。 注:我的hadoop是安装在/usr/hadoop下)
hdfs-site.xml 修改dfs.replication;(我的修改为:1)
mapred-site.xml 修改maprd.job.tracker;(我的修改为:192.168.0.2:9001)
8. 在cluster建立的过程中,conf/文件夹下的master和slaves要进行修改,根据自己的配置来进行修改。
我的修改为:
master:
192.168.0.2
slaves:
192.168.0.3
192.168.0.4
192.168.0.5
9. Hadoop虽然提供了一些人为的File System Shell命令,比如 bin/hadoop fs -mkdir input,最后的这个存放位置,不像Windows下那么复杂的文件夹结构。
个人觉得很多上传的文件在Hadoop中没什么文件夹概念。所以input文件夹Hadoop会自动将它放在根目录上,不要写成/usr/hadoop/input,这样会出现找不到input文件夹的问题。
遇到的问题:
1. 遇到无法启动datanode(即(1)在datanode上打jps的时候没有datanode和tasktracker进程(2)在namenode进行stop的时候是no namenode to stop提示)的时候,见 上6 .
2. 遇到无权限进行读写的的时候,见 上0 .
3. 遇到retrying N time(s)的问题,遇到这种情况可能有很多种原因,网上有一些其他的说明,不过没有启动jobtracker但是要使用map-reduce模块的话也会遇到这样的问题,即要启动 start-mapred.sh,由于以前只启动hdfs然后要进行wordcount的测试程序,没有启动jobtracker就进行了测试,囧~ 所以有必要看看自己是否没有启动jobtracker就使用了它。
4. 遇到 hdfs://master:dfsport/install_dir/input 不存在问题。可能的原因是:上9 .