centos7上Hadoop2.7.2完全分布式部署

1.规划

node1                  node2                      node3
datanode             datanode                 datanode
namenode          resourcemanager    secondarynamenode
nodemanager     nodemanager         nodemanager

2.设置环境

2.1 修改hostname主机名  注:分别在三台机器上执行下列命令  设置主机名

hostnamectl set-hostname node1

hostnamectl set-hostname node2

hostnamectl set-hostname node3

  

 

2.2 关闭防火墙     注:在三台机器上均需要执行

 systemctl stop firewalld
 systemctl disable firewalld

2.3 关闭selinux    注:在三台机器上均需要执行

vim /etc/selinux/config
SELINUX=disabled

#setenforce 0

2.4 创建hadoop用户    注:在三台机器上均需要执行

useradd -d /hadoop hadoop
echo 123|passwd --stdin hadoop

2.5 修改/etc/hosts     注:在三台机器上均需要执行

[root@node1 ~]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.100.10 node1
192.168.100.11 node2
192.168.100.12 node3

2.6 修改sudo配置文件    注:在三台机器上均需要执行

vim /etc/sudoers
## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL
hadoop  ALL=(ALL)       ALL

2.7  配置免密登录   注:使用hadoop用户执行,在三台机器上均需要执行下列命令

[hadoop@node1 ~]$ ssh-keygen -t rsa   ##三次回车   创建密钥

[hadoop@node1 ~]$ ssh-copy-id hadoop@node1  ##同步当前主机公钥到node1

[hadoop@node1 ~]$ ssh-copy-id hadoop@node2  ##同步当前主机公钥到node2
[hadoop@node1 ~]$ ssh-copy-id hadoop@node3  ##同步当前主机公钥到node3

2.8 安装jdk    注:在三台机器上均需要执行下列命令

[root@node1 soft]# rpm -ivh jdk-8u371-linux-x64.rpm 

 

3 安装hadoop-2.7.2 注:只在node1上执行,使用Hadoop用户执行命令

3.1 解压安装包

tar -zxf hadoop-2.7.2.tar.gz -C /hadoop/app 
ln -s /hadoop/hadoop-2.7.2 /hadoop/app/hadoop

3.2 修改Hadoop配置文件

cd hadoo/hadoop/etc/hadoop/
vim core-site.xml
  <property>
    <name>fs.defaultFS</name>
        <value>hdfs://node1:9000</value>
  </property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/app/hadoop/data</value>
<description>A base for other temporary directories.</description>
</property>

  

vim hdfs-site.xml 
  <property>
    <name>dfs.replication</name>
        <value>1</value>
  </property>

  <property>
    <name>dfs.namenode.secondary.http-address</name>
        <value>node3:50090</value>
  </property>

vim yarn-site.xml 
  <property>
    <name>yarn.resourcemanager.hostname</name>
        <value>node2</value>
  </property>

  <property>
    <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.log-aggregation-enable</name>
        <value>true</value>
  </property>
  <property>
    <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
  </property>

 vim mapred-site.xml
       <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
        </property>

        <property>
          <name>mapreduce.jobhistory.address</name>
          <value>node1:10020</value>
        </property>

        <property>
          <name>mapreduce.jobhistory.webapp.address</name>
          <value>node1:19888</value>
        </property>

<!-- 第三方框架使用yarn计算的日志聚集功能 -->

        <property>
          <name>yarn.log.server.url</name>
          <value>http://node1:19888/jobhistory/logs</value>
        </property>

  

  

3.3 修改 /etc/profile

sudo vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/jdk-1.8-oracle-x64
export HADOOP_HOME=/hadoop/app/hadoop
export PATH=$PATH:$JAVA_HOME:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

3.4 同步hadoop安装包

-bash-4.2$ pwd
/hadoop
-bash-4.2$ scp -r hadoop-2.7.2 hadoop@node2:/hadoop/app

-bash-4.2$ scp -r hadoop-2.7.2 hadoop@node3:/hadoop/app


su - root scp -r /etc/profile root@node2:/etc/profile scp -r /etc/profile root@node3:/etc/profile

3.5 使用Hadoop用户在node2、node3上执行下列命令  注:设置软连接 有利于以后的版本升级

cd /hadoop/app
ln -s hadoop-2.7.2 hadoop

4 启动hadoop

##在node1上执行
hadoop namenode -format

##在node1上执行
hadoop-daemon.sh start namenode 
hadoop-daemon.sh start datanode 
yarn-daemon.sh start nodemanager 
##在node2上执行
hadoop-daemon.sh start datanode 
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager

##在node3上执行
hadoop-daemon.sh start datanode 
hadoop-daemon.sh start secondarynamenode
yarn-daemon.sh start nodemanager
##在node1上启动历史日志服务
mr-jobhistory-daemon.sh start historyserver

  

  注:如果想要群起集群,需要注意两件事:1、在hadoop/etc/hadoo/slaves 中配置主机名

                                                                           2、在hadoop用户家目录下的.bashrc 中 添加 source /etc/profile

              群起集群的原理就是使用ssh 用户名@主机名 “hadoop-deamon.sh start namenode” ,使用这种nologin登录方式,只会执行~/.bashrc ,/etc/bashrc,/etc/profile.d/ 这三个文件,造成部分环境变量无法识别到。

             而login登录的方式则会执行 /etc/profile,/etc/profile.d/,~/.bash_profile,~/.bashrc ,/etc/bashrc 会执行这五个文件。

            使用start-yarn.sh 启动脚本的时候 ,只能在resourcemanager这台主机执行才行启动resourcemanager,其他主机不行。

  

  

 

posted @ 2023-05-28 19:06  何雪原  阅读(24)  评论(0)    收藏  举报