centos7安装hadoop(集群模式)


节点规划

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

<!-- 使用yarn资源管理器  -->
<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>


<!-- mr运行需要的配置,分别是 appmanger,map,reduce的环境  -->
<!-- 不配置会导致mr无法运行  -->
 <property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>

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

posted on 2024-02-26 20:29  zhangyukun  阅读(126)  评论(0编辑  收藏  举报

导航