安装hadoop3.3.6集群
背景
去年写了一篇编译ranger2.4.1 文章。有网友说部署ranger2.4.1 后,在对接hive地方老报错。所以一探究竟,为其搭建ranger 2.4.1环境。ranger 2.4.1对接hive ,需要安装hive,而hive又依赖hadoop.所以决定先安装hadoop.
安装jdk1.8.0
这个比较简单,将jdk1.8.0_201解压到/usr/java目录
tar -zxvf /setup/jdk1.8.0_201.tar -C /usr/java
然后在/etc/profile增加jdk路径及JAVA_HOME环境变量
vi /etc/profile
:wq保存后,执行source /etc/profile 使得环境变量生效
source /etc/profile
验证java 版本
安装hadoop3.3.6 集群
网络规划
主机名 | 地址 |
---|---|
master | 192.31.11.194 |
slave2 | 192.31.11.195 |
slave3 | 192.31.11.196 |
slave4 | 192.31.11.197 |
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
四台机都做
添加ip映射
vi /etc/hosts
在/etc/hosts的末尾添加
192.31.11.194 master
192.31.11.195 slave2
192.31.11.196 slave3
192.31.11.197 slave4
集群每台都加上
修改主机名
在master,slave2,slave3,slave4 机,使用root用户分别执行
hostnamectl set-hostname master
hostnamectl set-hostname slave2
hostnamectl set-hostname slave3
hostnamectl set-hostname slave4
创建hdfs用户
为了安全起见,不建议直接使用root用户,在集群每台机创建
sudo useradd hdfs -m -s /bin/bash
sudo passwd hdfs # 设置密码
配置免密登录
切换到master机器,切换到hdfs用户,创建密钥
su - hdfs
ssh-keygen -t rsa
都默认敲回车就行
把公钥复制到各个节点,第一次登陆会让输入密码
ssh-copy-id hdfs@master
ssh-copy-id hdfs@slave2
ssh-copy-id hdfs@slave3
ssh-copy-id hdfs@slave4
验证免密是否成功
ssh slave2
如上图表示成功
安装hadoop3.3.6
解压tar包
tar -zxvf /setup/hadoop3.3.6.tar.gz -C /opt
修改配置文件
1.配置Hadoop环境变量
vi /etc/profile
export HADOOP_HOME=/opt/hadoop-3.3.6
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
测试Hadoop环境变量是否成功
2.hadoop-env.sh
cd $HADOOP_HOME/etc/hadoop
vi hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201/
export HDFS_NAMENODE_USER=hdfs
export HDFS_DATANODE_USER=hdfs
export HDFS_SECONDARYNAMENODE_USER=hdfs
export YARN_RESOURCEMANAGER_USER=hdfs
export YARN_NODEMANAGER_USER=hdfs
3.core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-3.3.6</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>hdfs</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440 </value>
</property>
</configuration>
4.hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:9868</value>
</property>
</configuration>
- mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
6.yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vpmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://master:19888/jobhistory/logs</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
7.workers
vi workers
将localhost改为
文件分发
文件从master机器分发到其他三台机,省得再配一遍
分发jdk安装目录
scp -r /usr/java/jdk1.8.0_201 hdfs@slave2:~
scp -r /usr/java/jdk1.8.0_201 hdfs@slave3:~
scp -r /usr/java/jdk1.8.0_201 hdfs@slave4:~
因为hdfs用户没有权限直接访问/usr目录,所以先复制到它的Home目录,然后再本机root用户再挪位置
slave2,slave3,slave4 三台执行以root用户如下命令
# mkdir /usr/java
# mv /home/hdfs/jdk1.8.0_201 /usr/java/jdk1.8.0_201
分发hadoop安装目录
scp -r /opt/hadoop3.3.6 hdfs@slave2:~
scp -r /opt/hadoop3.3.6 hdfs@slave3:~
scp -r /opt/hadoop3.3.6 hdfs@slave4:~
同理切换到各自机器使用root用户挪到/opt目录
分发环境变量
scp -r /etc/profile hdfs@slave2:~
scp -r /etc/profile hdfs@slave3:~
scp -r /etc/profile hdfs@slave4:~
同理切换到各自机器使用root用户挪到/etc目录
启停集群
hdfs用户授权(四台机都执行)
sudo chown -R hdfs:hdfs /opt/hadoop3.3.6
sudo chmod -R 755 /opt/hadoop3.3.6
sudo setfacl -R -m u:hdfs:rx /usr/java
sudo chmod +x /usr/java/jdk1.8.0_201/bin/java
sudo chown -R root:root /usr/java/jdk1.8.0_201
在slave2、slave3,slave4 中使用source /etc/profile命令初始化系统环境变量
验证是否有权限
ssh hdfs@slave2 "java -version"
如果能显示java版本号,就表示有权限
在master机器启动集群
首次启动集群需要先格式化 NameNode 节点
在master上执行
hdfs namenode -format
启动集群
start-dfs.sh
start-yarn.sh
四台节点jps查看
网页界面
本地浏览器中查看 Hadoop web 界面:192.31.11.194 :9870(看文件结构),
如果要看任务运行,进入192.31.11.194:8088
停止集群
stop-all.sh
最后
好,hadoop3.3.6集群部署,就写到这里。如需沟通:lita2lz