Configuration of Hadoop YARN Environment
更新时间:2020/02/23
Ubuntu版本:20.04.1
Hadoop版本:3.2.1
参考资料:
- 官方文档:link
01 计算机预配置
一、修改ubuntu名称,以分辨不同的计算机:
打开/etc/hostname,将名称修改为ubuntu01
二、配置ubuntu为静态ip
参考资料:博客
使用ifconfig查看本机网卡,笔者为ens33
sudo vim /etc/network/interfaces
auto ens33 iface ens33 inet static address 192.168.18.101 #配置静态ip 与主机ip网段一致 gateway 192.168.18.1 #与主机网关相同 netmask 255.255.255.0
reboot
若使用ubuntu桌面版,可以使用图形化界面。即点击右上角倒三角,进入Wired Settings,在IPV4中手动配置即可
02 单机配置(Standalone Operation)
默认配置为单机运行,故在此首先测试一下hadoop是否可以正常运行
首先cd到hadoop根目录,而后
mkdir input
cp etc/hadoop/*.xml input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar grep input output 'dfs[a-z.]+'
cat output/*
此配置下etc/hadoop/core-site.xml中为
etc/hadoop/hdfs-site.xml同上
03 伪分布式配置(Pseudo-Distributed Operation)
参考资料:博客
首先我们先按照官方文档进行配置
配置etc/hadoop/core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
配置etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
检查ssh是否可以无密码连接本机:
$ ssh localhost
若需要输入密码,则配置ssh为无密码:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
配置Hadoop环境变量:
打开/etc/profile
export HADOOP_HOME="/home/minelhuang/Hadoop/hadoop-3.2.1"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
配置hadoop-env.sh、mapred-env.sh、yarn-env.sh文件的JAVA_HOME参数
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
而后,格式化HDFS
$ bin/hdfs namenode -format
开启Hadoop:
$ sbin/start-dfs.sh
如果报错:HDFS_NAMENODE_USER defined,解决方法如下:
打开***$HADOOP_HOME/etc/hadoop/hadoop-env.sh
***,添加如下代码,这里我们设置hadoop的运行账户为root:
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
而后可能报错:pdsh@ubuntu01: localhost: connect: Connection refused,解决方法参考link
出现该问题的原因为,pdsh默认使用rsh,而不是ssh
更改$HADOOP_HOME/libexec/hadoop-functions.sh中的PDSH_SSH_ARGS_APPEND="${HADOOP_SSH_OPTS}" pdsh \替换为
PDSH_RCMD_TYPE=ssh PDSH_SSH_ARGS_APPEND="${HADOOP_SSH_OPTS}" pdsh \
若出现报错:localhost: root@localhost: Permission denied (publickey,password).
这是因为启动的账户我们设置为root,但是ssh免密登录并没有设置为root账户,故通过su root进入root账户后,重新配置ssh免密登录即可。
同理,若想在非root账户上运行hadoop,请修改hadoo-env.sh中的账户
在对应账户输入jps,若namenode, datanode, secondary namenode均存在于java进程中,代表hadoop启动成功
若使用hdfs启动成功,YARN也应该可以启动成功,以上为笔者配置hadoop时遇到的一些问题以及解决办法。