以下安装的hadoop版本是3.3.6 ,由于hadoop是运行于java环境,因此,需要提前安装java jdk并配置环境变量。
jdk的安装及配置:
jdk8 国内下载路径:https://repo.huaweicloud.com/java/jdk/8u202-b08/ 可根据实际需要选择对应的jdk版本
1、下载jdk
wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz
2、解压jdk
tar zxvf jdk-8u202-linux-x64.tar.gz
移动到/usr/local/目录下,并更改目录名称为:jdk8
mv jdk1.8.0_202/ /usr/local/jdk8
3、在/etc/profile 配置文件后面,添加jdk的安装路径和bin目录信息
export JAVA_HOME=/usr/local/jdk8
export PATH=$PATH:$JAVA_HOME/bin
4、刷新/etc/profile 的信息
source /etc/profile
5、验证jdk是否配置正确
java -version
出现以下信息,说明jdk已经配置成功
hadoop3.3.6 安装及配置
hadoop3.3.6 下载地址:
wget https://mirrors.aliyun.com/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
1、创建hadoop用户(由于hadoop默认不允许用root账号运行)
useradd hadoop
设置hadoop账号密码
passwd hadoop
验证hadoop是否登录成功
su - hadoop
如下信息,说明hadoop账号已可以正常使用:
2、配置hadoop账号ssh免密登录
# 登录hadoop账号
su - hadoop
# 生成密钥对(一直enter即可) ssh-keygen -t rsa# 将公钥复制到本机 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 修改~/.ssh 权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
# 测试免密登录
ssh localhost # 如果yes 之后,不用输入密码则免密登录已经配置成功
3、解压hadoop
tar zxfv hadoop-3.3.6.tar.gz
移动到/usr/local/目录下并更改目录名称为:hadoop
mv hadoop-3.3.6 /usr/local/hadoop
通过ls -l 或 ll /usr/local/hadoop 查看目录权限是否为:hadoop账号和hadoop组,如果不是则需要手动改一下hadoop目录的权限
chown -R hadoop:hadoop /usr/local/hadoop
4、在/etc/profile 下配置hadoop环境变量信息
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
刷新/etc/profile 配置信息
source /etc/profle
5、配置hadoop启动相关信息(一般在hadoop的安装目录下/etc/hadoop),需要配置以下几个配置文件
5.1 core-site.xml 配置
<configuration><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property><property><name>hadoop.tmp.dir</name><value>/tmp/hadoop-tmp</value></property><property><name>hadoop.proxyuser.hadoop.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.hadoop.groups</name><value>*</value></property> </configuration>
5.2 hdfs-site.xml 配置
<configuration><property><name>dfs.replication</name><value>1</value></property><property><name>dfs.namenode.name.dir</name><value>/tmp/hadoop/namenode</value></property><property><name>dfs.datanode.data.dir</name><value>/tmp/hadoop/datanode</value></property>
</configuration>
5.3 mapred-site.xml 的配置
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property> </configuration>
5.4 yarn-site.xml 的配置
<configuration> <!-- Site specific YARN configuration properties --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property> <!--这里的value可以用localhost,如果用localhost需要配置centos的hosts的地址映射 --><name>yarn.resourcemanager.hostname</name><value>192.168.197.130</value></property> </configuration>
5.5 编辑hadoop-env.sh 的配置,开启并配置正确的HAVA_HOME 、HADOOP_HOME 、HADOOP_CONF_DIR 变量的值,保存并退出,如下
6、在hadoop安装目录下创建data/namenode 和 data/datanode (对应hdfs-site.xml配置文件中的数据存放地址)
# 创建namenode 和 datanode目录 mkdir -p /usr/local/hadoop/data/{namenode,datanode}# 重新给/usr/local/hadoop/目录指定用户和用户组,覆盖新建的文件夹,因为hadoop账号当前未分配创建目录权限 chown -R hadoop:hadoop /usr/local/hadoop
7、格式化hdfs
hdfs namenode -format
显示如下:
8、切换到hadoop账号,启动hadoop集群
# 切换到hadoop账号
su - hadoop
# 启动HDFS start-dfs.sh# 启动YARN start-yarn.sh
或者通过start-all.sh 启动
start-all.sh # 这个脚本保护启动HDFS 和 YARN 服务
9、执行jps命令查看进程,看到:NameNode, DataNode, ResourceManager, NodeManager 等进程信息,说明已启动成功。如下:
10. 关闭防火墙,访问:http://服务器IP地址:9870和http:服务器IP地址:8088端口,验证是否正常
systemctl stop firewalld
说明hadoop已经配置好了
hadoop 启动报错:localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
说明hadoop账号的免密登录未生效,需要重新设置好,再启动即可
hadoop启动报错:localhost: ERROR: Unable to write in /usr/local/hadoop/logs. Aborting.无法写入hadoop/logs 目录
通过ls -l /usr/local/hadoop 查看logs目录的权限,发现logs目录的用户和用户组的权限都是root,更新目录权限即可
chown -R hadoop:hadoop /usr/local/hadoop