Hadoop的经验总结
一、 准备工作:
① 安装虚拟机:要把ip设为静态的,不然自动重启时ip会有变化;在虚拟机上安装好JDK,然后克隆两台虚拟机,Ip分别为:172.19.121.123、172.19.121.121、172.19.121.124,在三台机器相同路径下创建相同的用户,在用户下安装hadoop。
② Hadoop安装,在官网下载tar.gz安装包,解压即可.
二、 hadoop配置:
① 配置/etc/hosts
② 配置/etc/sysconfig/network(加上主机名固定)
123机器上配置:
121、124机器上的配置将HOSTNAME改为相应的主机名即可
为了使得重新启动系统后仍能保持如上的主机名称,还分别需要在各节点执行类似如下的命令:$sed -i 's@\(HOSTNAME=\).*@\1y123@g' /etc/sysconfig/network
$hostname=y123
③ 配置ssh互信:
在y121、y123、y124三个主机的 /home/用户名 路径下操作如下命令:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$chmod 600 .ssh/authorized_keys(权限不对互信会不成功)
然后将各自的authorized_keys拷贝到其他两台机器上,确保每台机器authorized_keys里都有其他机器的authorized_keys,如果mastaer(y123)互信不通其他的机器,说明互信顺序错误,应先将y123的authorized_keys拷贝到另两台机器的authorized_keys下面。
④ 配置conf/hadoop-env.sh
释放JAVA_HOME配置,值为jdk安装路径(如/usr/java/jdk1.6.0_26)
⑤ 配置conf/core-site.xml
⑥ 配置conf/hdfs-site.xml
Masters的配置:
Slaves的配置:
⑦ 配置conf/mapred-site.xml
三、 Hadoop的启动、停止
① 初始化:$ bin/hadoop namenode –format
② 启动:$ bin/start-all.sh
也可以分别启动:$bin/start-dfs.sh,$bin/start-dfs.sh
③ Hadoop 运行后,可通过网页的形式浏览相关信息:
http://172.19.121.123:50070/
④ $jps //用此命令查看相关的进程信息
其中master显示:
Slaves显示:
四、 测试
在/home/用户名/hadoop目录下执行:
1. $bin/hadoop dfs -putconf/core-site.xml input //将conf/目录下的 core-site.xml 作为输入放在 input中;
2. $bin/hadoop jarhadoop-examples-1.1.1.jar wordcount input output //执行任务,并将结果输出至output 文/件夹中;
3. $bin/hadoop dfs-cat output/* 或者#cat output/* //查看输出的结果信息
#bin/hadoop dfs-get output output //将dfs 中的 output 文件输出到本地 output 中;
4. 关闭 Hadoop
$bin/stop-dfs.sh
$bin/stop-mapred.sh或者bin/stop-all.sh
五、 常见错误
1.在做wordcount例子时报org.apache.hadoop.security.AccessControlException:org.apache.hadoop.security.AccessControlException: Permission denied:user=yuyaox, access=EXECUTE, inode="system":yyx:supergroup:rwx------atsun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
解决:在conf/hdfs-site.xml里加
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
2. ERRORhdfs.DFSClient: Failed to close file/user/yyx/inputorg.apache.hadoop.ipc.RemoteException: java.io.IOException: File/user/yyx/input could only be replicated to 0 nodes, instead of 1
解决:只需在core-site.xml,并且value里的路径尽可能的浅。
3. 经常性的datanode起不来,解决办法:将master里conf/hdfs-site.xml文件的name.dir相应路径下的文件夹及slave 里data.dir相应路径下的data文件夹给删了,再重新初始化,重启hadoop。