本文基于Apache Hadoop 3.3.6 – Hadoop:设置单节点集群。这一网页的整理创作,旨在进行基于Linux系统环境下的搭建思路分享。
基本配置:
JAVA
在Apache官网下(Hadoop Java 版本 - Hadoop - Apache Software Foundation)查阅得知Hadoop(即当前各大数据软件)支持以下版本:
我们据此取交集,安装JAVA 8。JDK可以使用以下命令安装(使用具有sudo权限的用户输入命令):
sudo yum install java-1.8.0-openjdk
sudo yum install java-1.8.0-openjdk-devel
然后检查 jdk 是否成功安装:
java -version
javac -version
如果显示出版本号(如下图),则说明安装成功!
SSH免密登录
在使用SSH生成免密登陆之前先设置一个专门的Hadoop用户,便于修改权限等的操作,方便后期管理(在设置密码时密码不足8位会出现警告但可以继续执行命令):
sudo useradd -s /bin/bash -m hadoop #创建
sudo passwd hadoop #初始化密码
sudo usermod -aG wheel hadoop #添加用户 “hadoop”到 “wheel” 用户组,具sudo权限
现在在Hadoop用户下配置ssh免密登录(如果提示没有 SSH 可以使用 sudo yum install ssh 命令安装):
su hadoop #切换为hadoop用户,下文均以hadoop用户执行命令
ssh-keygen -t rsa #生成用户当前密钥
ssh-copy-id hadoop@localhost #将本地的 SSH 公钥复制到hadoop
ssh localhost #测试隧道是否能连接到主机
Hadoop伪分布式系统的安装(Hadoop用户下)
安装wget
wget (web get) 可以**从指定网址下载网络文件**。速度快,方便好用。 本文的下载方法是通过wget指定网页链接,还可以在Windows下载好压缩包后上传文件至Linux系统再解压(直接下载原文件会比较慢,同时也不推荐)。
sudo yum install wget
下载Hadoop安装包
在Apache官网中给出了官网的下载链接,缺点是下载速度非常慢,时间跨度在8小时左右并且网速不稳定,推荐使用国内镜像网站下载:Index of /apache/hadoop/common/hadoop-3.3.6 (tsinghua.edu.cn)
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.6//hadoop-3.3.6.tar.gz
等待Hadoop压缩包下载完成后,新建一个专门用来存放Hadoop程序的目录,一般在 /usr/local 下创建(如果提示没有 tar 可以使用 sudo yum install tar 命令安装)
#此块均在家目录下执行
sudo mkdir /usr/local/hdp
#此处创建了一个名为hdp的目录
sudo chown -R hadoop:hadoop /usr/local/hdp
#修改权限
#递归地将/usr/local/hdp目录及其下的所有文件和子目录的所有者改为用户 hadoop 和用户组 hadoop,此文件夹下的其他文件权限保持默认root用户
tar -xzf hadoop-3.3.6.tar.gz
#在家目录下执行解压命令文件
mv hadoop-3.3.6 /usr/local/hdp/hadoop
#为方便输入将 hadoop-3.3.6 改名为 hadoop并移动到创建好的hdp目录下
完成上述步骤后显示 /usr/local 目录下文件的权限,确定 hadoop 用户对 hdp 拥有足够的管理权限。
配置文件
设置JAVA环境变量
首先找到 Java 安装的根目录,步骤如下:
java 安装的在目录 /usr/lib/jvm 下,此时切换到 hadoop-env.sh 文件中写入环境变量,此文件在目录 /usr/local/hdp/hadoop/etc/hadoop 下,所有要配置的文件都在该目录下:
首先在 hadoop-env.sh 的 vim 模式下写入,保存并退出。
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
完成以上步骤就完成了Java环境变量的配置。
配置 core-site.xml
将以下内容存入 xml 文件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
配置好后如上图
配置hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
此时保存并退出后就可以格式化并尝试启动 NameNode 守护程序和 DataNode 守护程序,但是方便起见,在此目录下将 yarn 也配置好避免多次切换目录。
配置mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
配置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_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
格式化文件系统
切换到 /hadoop/bin 目录下使用命令进行格式化
启动进程
此时启动 hdfs 会显示(无法解析主机名 “bbuildServe”:名称或服务未知):
这是因为主机名没有正确映射到主机地址(127.0.0.1),还需要在 /etc 文件下进入 vim 模式修改 hosts 所映射的主机名(需要借助sudo权限):
此时再切回 /sbin 目录下执行 start 就能正常启动进程了(此时会报一个绿色警告表示映射成功),再使用 jps 命令查看系统进程(除 jps 外至少三个进程,是没有问题的)
在此目录下再尝试用 ./start-yarn.sh 命令启动 yarn,一切正常下会显示以下进程:
隧道链接web页面
HDFS管理后台链接:http://localhost:9870/
以及YARN管理后台链接:http://localhost:8088/
在程序启动的前提下通过 SSH 隧道能够访问到链接网页,SSH 隧道设置目标端口及监听端口分别为 8088/9870 (这里以端口 8088 为例):
设置好 SSH 并成功打开后就可以在浏览器直接进入对应的网址。
结束进程
在启动各程序后使用,使用结束必须结束进程,否则可能会损坏安装程序, /stop-all.sh 一次结束所有进程。
总结
本文仅简单梳理安装分布式文件系统的经过,未提及很多可能隐藏的问题,同时本文未写入创建执行作业所需目录的具体过程,同时若有先配置过防火墙,在防火墙开启的状态下其端口访问可能会失败,端口访问使可以先检查防火墙是否为开启状态,以上等皆欢迎留言讨论。
版权归原作者 此人很懒, 所有, 如有侵权,请联系我们删除。