目录
节点规划
ip | hostname | 节点作用 |
---|---|---|
192.168.1.200 | vm200 | NameNode,SecondaryNameNode,resourcemanager |
192.168.1.201 | vm201 | NameNode |
192.168.1.202 | vm202 | NameNode |
安装前准备
准备jdk和hadoop的安装文件
上传到192.168.1.200的/opt目录下面
[hadoop@vm200 opt]$ ls -l
total 856372
-rw-r--r--. 1 root root 730107476 Feb 25 23:46 hadoop-3.3.6.tar.gz
-rw-r--r--. 1 root root 146815279 Feb 25 22:20 jdk-8u321-linux-x64.tar.gz
分别修改三台主机名字
每个节点都要执行
#三台主机上分别执行,后面vm200修改成节点规划中的hostname
hostnamectl set-hostname vm200
建立hadoop账号
每个节点都要执行
-
添加账号并且指定密码
#添加账号 useradd hadoop #指定密码 passwd hadoop
-
添加hadoop账号到sudo组,vi /etc/soduers
## Allow root to run any commands anywhere root ALL=(ALL) ALL hadoop ALL=(ALL) ALL #添加这一行
-
切换到hadoop账号
#切换到hadoop 账号,一定要切换到hadoop账号,因为后面我们是对haddop账号做免密登录的 su hadoop
配置三台主机的证书登录
每个节点都要执行
#在三台主机上都生成密钥对
ssh-keygen -t rsa
#在三台主机上,分别把公钥复制到另外的主机上
#我这里 namenode 和 SecondaryNameNode 是同一台机子,所以vm200 也需要对自己免密邓丽
ssh-copy-id -i vm200
ssh-copy-id -i vm201
ssh-copy-id -i vm202
解压jdk和hadoop
sudo tar -zxvf hadoop-3.3.6.tar.gz
sudo tar -zxvf jdk-8u321-linux-x64.tar.gz
配置环境变量
vi /etc/profile 在末尾追加下面部分
#JDK
export JAVA_HOME=/opt/jdk1.8.0_321
export PATH=$JAVA_HOME/bin:$PATH
#hadoop
export HADOOP_HOME=/opt/hadoop-3.3.6
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
复制jdk和配置文件到别的节点
scp -r /opt/jdk1.8.0_321 hadoop@vm201:/opt
scp -r /opt/jdk1.8.0_321 hadoop@vm202:/opt
scp -r /etc/profile hadoop@vm201:/etc
scp -r /etc/profile hadoop@vm202:/etc
使环境变量生效
所有节点执行
source /etc/profile
编辑文件修改
修改配置文件
vi /opt/hadoop-3.3.6/etc/hadoop/core-site.xml
<configuration>
<!--指定文件系统地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://vm200:9000</value>
</property>
<!--指定文件临时文件地址 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoopData/tmp</value>
</property>
<!--指定静态用户 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>hadoop</value>
</property>
</configuration>
vi /opt/hadoop-3.3.6/etc/hadoop/hdfs-site.xml
<configuration>
<!--指定副本数 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--指定namenode数据目录 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoopData/dfs/name</value>
</property>
<!--指定datanode数据目录 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoopData/dfs/data</value>
</property>
<!--指定namenode地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>0.0.0.0:50070</value>
</property>
</configuration>
vi /opt/hadoop-3.3.6/etc/hadoop/yarn-site.xml
<configuration>
<!--指定resourcemanager位置 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>vm200</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
vi /opt/hadoop-3.3.6/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--历史任务地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>vm:10020</value>
</property>
<!--历史任务web地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>vm200:19888</value>
</property>
</configuration>
vi /opt/hadoop-3.3.6/etc/hadoop/workers
vm201
vm202
vi /opt/hadoop-3.3.6/etc/hadoop/hadoop-env.sh
#找到export JAVA_HOME 的地方改成 jdk位置
export JAVA_HOME=/opt/jdk1.8.0_321
创建文件目录
mkdir -p /opt/hadoopData/tmp
mkdir -p /opt/hadoopData/dfs/name
mkdir -p /opt/hadoopData/dfs/data
复制hadoop到别的节点
#复制hadoop 目录
scp -r /opt/hadoop-3.3.6 hadoop@vm201:/opt
scp -r /opt/hadoop-3.3.6 hadoop@vm202:/opt
#复制数据目录
scp -r /opt/hadoopData hadoop@vm201:/opt
scp -r /opt/hadoopData hadoop@vm202:/opt
初始化namenode
在vm200上执行
hdfs namenode -format
启动hadoop
在vm200上执行
start-all.sh
查看节点状态
查看节点状态(vm200)
[hadoop@vm200 hadoop-3.3.6]$ jps -l
7104 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode
6876 org.apache.hadoop.hdfs.server.namenode.NameNode
29133 sun.tools.jps.Jps
2143 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager
查看节点状态(vm201)
[hadoop@vm201 hadoop-3.3.6]$ jps
2290 NodeManager
2147 DataNode
2740 Jps
查看节点状态(vm202)
[root@vm202 logs]# jps
2241 NodeManager
2795 Jps
2126 DataNode
hadoop管理地址:http://192.168.1.200:8088
hdfs管理地址:http://192.168.1.200:50070