VMware Fusion
1. ubuntu16.04 64位 ip:172.16.29.11
2. jdk9.0.4
3. hadoop2.8.1
在Ubuntu下,软件安装到/opt下,当前正在使用的用户,对于opt目录需要有读写权限:
> sudo chmod -R 777 /opt
> sudo chown -R yourusername:yourusername /opt
vim 打开/etc/profile并编辑:
> sudo vim /etc/profile
在profile末尾加入如下配置:
export JAVA_HOME=/opt/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
更新配置文件:
> source /etc/profile
查看是否安装成功:
> java
...
> javac
...
> java -version
...
解压hadoop安装包到opt目录下:
> sudo tar -zxvf hadoop-2.8.1.tar.gz -C /opt
> mv /opt/hadoop-2.8.1 /opt/hadoop #重命名
配置环境变量,在/etc/profile文件中加入以下内容:
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_CLASSPATH=$(hadoop classpath):$HADOOP_CLASSPATH
更新配置文件:
> source /etc/profile
使用hadoop version命令测试是否配置成功(如果成功,会显示hadoop版本号):
> hadoop version
配置文件存放在/opt/hadoop/etc/hadoop中有n多个文件,暂时我们只需要修改的只有5个
1)hadoop-env.sh
大约在25行左右
export JAVA_HOME=${JAVA_HOME}改成export JAVA_HOME=/opt/jdk
注意:在配置文件中有提示我们怎么设置,我们一般不删除,二回选择注释它的提示。
2)core-site.xml
fs.defaultFS
hdfs://172.16.29.11:9000
分析:172.16.29.11是你主节点所在主机的ip,而9000为端口
3)hdfs-site.xml
dfs.nameservices
hadoop-cluster
dfs.namenode.name.dir
file:///data/hadoop/hdfs/nn
dfs.namenode.checkpoint.dir
file:///data/hadoop/hdfs/snn
dfs.namenode.checkpoint.edits.dir
file:///data/hadoop/hdfs/snn
dfs.datanode.data.dir
file:///data/hadoop/hdfs/dn
4)mapred-site.xml
在hadoop的相关目录中没有此文件,但是有一个mapred-site.xml.template文件,将该文件复制一份为mapred-site.xml
> cp mapred-site.xml.template mapred-site.xml
> vi mapred-site.xml
mapreduce.framework.name
yarn
5)yarn-site.xml
yarn.resourcemanager.hostname
172.16.29.11
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.local-dirs
file:///data/hadoop/yarn/nm
6)创建相关目录
> sudo mkdir -p /data/hadoop/hdfs/nn
> sudo mkdir -p /data/hadoop/hdfs/dn
> sudo mkdir -p /data/hadoop/hdfs/snn
> sudo mkdir -p /data/hadoop/yarn/nm
> sudo mkdir -p /opt/hadoop/logs
注意:
如果使用sudo启动hadoop的相关进程,这几目录的权限可以不用管。
如果是使用当前的用户启动相关进程,对于opt目录,当前用户得有读写权限,对于/data目录也需要读写权限。
7)对HDFS集群进行格式化,HDFS集群是用来存储数据的。
> hdfs namenode -format
1)启动HDFS集群
> hadoop-daemon.sh start namenode #启动主节点
> hadoop-daemon.sh start datanode #启动从节点
2)启动YARN集群
> yarn-daemon.sh start resourcemanager
> yarn-daemon.sh start nodemanager
3)启动作业历史服务器
> mr-jobhistory-daemon.sh start historyserver
4)jps命令查看是否启动成功
> jps
JPS
NameNode
DataNode
NodeManager
JobHistoryServer
ResourceManager
5)HDFS和YARN集群都有相对应的WEB监控页面
HDFS:http://172.16.29.11:50070
YARN:http://172.16.29.11:8088
6)HDFS集群的简单操作命令
hdfs dfs -ls /
hdfs dfs -mkdir -p /user/zyh
7) YARN集群的操作—-提交任务/作业
计算PI值的作业:
> yarn jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar pi 4 100
注意:
如果yarn没有启动成功,请打开hdfs-site.xml,修改dfs.datanode.data.dir 为fs.datanode.data.dir
查看http://172.16.29.11:8088可以看出计算pi值得任务正在执行:
1.如果启动某服务后,提示没有权限创建某个目录,请手动创建。
2.启动HDFS集群,提示Name node is in safe mode。
解决办法:
这是因为在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。
可以通过以下命令来手动离开安全模式:
hadoop dfsadmin -safemode leave
用户可以通过dfsadmin -safemode value 来操作安全模式,参数value的说明如下:
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get - 返回安全模式是否开启的信息
wait - 等待,一直到安全模式结束。
3.执行yarn jar提交作业未成功,查看描述:
解决办法:
检查损坏的hdfs文件列表 使用命令可以打印出损坏的文件列表: hadoop fsck
没有冗余备份,只能删除损坏的文件,使用命令: hadoop fsck -delete
> hadoop fsck
> hadoop fsck -delete
4.如果jps查看某个服务没有启动,请查看hadoop/logs中的对应日志文件。比如NameNode没有启动,打开hadoop-yourusername-namenode-hadoop12.out.log,查看错误信息,(是否创建的文件夹用户及用户组权属问题?是否namenode未格式化问题?)
参考博文:https://www.cnblogs.com/zhangyinhua/p/7647686.html