1.使用环境
Centos 7.4(内核3.10.0-693.2.2.el7.x86_64) JDK 1.8 Hadoop 3.0.0-beta1
2.安装
在linux中下载完Hadoop文件并解压之后,进入到解压的Hadoop根目录
1.在Hadoop根目录下更改etc/hadoop/hadoop-env.sh文件中的jdk目录
export JAVA_HOME=本机的Jdk目录
2.Hadoop根目录下修改etc/hadoop/core-site.xml:
“`
fs.defaultFS
hdfs://localhost:9000
“`
fs.defaultFS 主要用来设置Hadoop的默认文件系统,HDFS的守护程序通过该属性来确定HDFS namenode的主机以及端口号,从而使HDFS客户端能通过该地址连接到namenode
3.hadoop 根目录下修改etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
dfs.replication主要是用来设置文件系统的数据冗余分数设置,默认的设置是3个,但是由于处于伪分布式下,只有一个datanode,无法将文件系统的数据复制到3个datanode节点上,回持续报错,修改之后就不会报错
4.检查本机是否可以免密码登录,如果不行则需要配置
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
5.格式化HDFS并启动HDFS
bin/hdfs namenode -format
sbin/start-dfs.sh
如果运行脚本报如下错误,
ERROR: Attempting to launch hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting launch.
Starting datanodes
ERROR: Attempting to launch hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting launch.
Starting secondary namenodes [localhost.localdomain]
ERROR: Attempting to launch hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting launch.
解决方法是因为缺少用户定义造成的,所以分别编辑开始和关闭脚本
vim sbin/start-dfs.sh
vim sbin/stop-dfs.sh
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
如果通过jps 查看datanode进程没有启动,可以进入Hadoop根目录下的logs目录下查看日志如果错误如下:
java.io.IOException: Incompatible clusterIDs in /tmp/hadoop-root/dfs/data: namenode clusterID = CID-ee997149-f4aa-4ffc-bbc5-a5385993d77f; datanode clusterID = CID-d1296511-b5fb-426d-b119-add1599c6bb1
可以看出datanode和namenode的clusterIDs不一致,解决办法:
第一种办法.进入tmp目录下删除文件重新格式hdfs
第二种办法:将hadoop-root/dfs/data/current/VERSION中的clusterID与hadoop-root/dfs/name/current/VERSION clusterID 改为一样
重新启动hdfs即可
6.创建hdfs的目录
bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/hdfs用户目录
7.修改etc/hadoop/mapred-site.xml:文件
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改 etc/hadoop/yarn-site.xml:文件
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
8.修改sbin/start-yarn.sh sbin/stop-yarn.sh文件添加:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
启动sbin/start-yarn.sh 即可
确认是否启动成功
1.使用jps命令查看是否有5个进程启动分别是:
SecondaryNameNode
NameNode
NodeManager
ResourceManager
DataNode