在CentOS7下搭建Hadoop2.9.0集群

时间:2022-05-20 08:35:47

系统环境:CentOS 7

JDK版本:jdk-8u191-linux-x64

MYSQL版本:5.7.26

Hadoop版本:2.9.0

Hive版本:2.3.4

 

Host Name Ip User/Pass
Namenode 192.168.2.3 root/root.
Datanode1 192.168.2.5 root/root.
Datanode2 192.168.2.6 root/root.

 

 

 

安装JDK

 

https://www.cnblogs.com/java-h/p/11127259.html

 

安装MYSQL

 

https://www.cnblogs.com/java-h/p/11127636.html

 

1、配置服务器环境

1、进入root : su root 
2、关闭防火墙:systemctl stop firewalld 3、关闭防火墙开机自启:systemctl disable firewalld.service 4、查看防火墙状:firewall-cmd –state 5、修改每台机的hosts:vim /etc/hosts 192.168.2.3 namenode 192.168.2.5 datanode1 192.168.2.6 datanode2

2、配置SSH免密登录

 

1、在Namenode 上生成密钥对:ssh-keygen -t rsa

2、在从机上创建.ssh文件夹:mkdir .ssh

3、将公钥复制到从机(Datanode1、Datanode2)上:

  scp ~/.ssh/id_rsa.pub root@192.168.2.6:~/.ssh/

  scp ~/.ssh/id_rsa.pub root@192.168.2.5:~/.ssh/

4、登录从机,进入目录:cd /home/hadoop/

5、将公钥放到.ssh中的authorized_keys:

  cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

6、测试:

在主机namenode上登陆从机datanode1 
ssh datanode1
ssh datanode2
ssh namenode 如果能切换到对应的机器则表示成功。 注意: 1、在切换到datanode1 后,如果需要测试登陆datanode2的话,需要先返回到master,用命令exit。 2、配置SSH时除了子节点主节点自己也要给自己配置SSH免密。

3、配置Hadoop集群

 

1、创建存放Hadoop的文件夹:mkdir /home/bigdata
2、进入新建的文件夹:cd /home/bigdata
3、解压hadoop和建立文件:tar -zxvf hadoop-2.9.0.tar.gz 
4、重命名:mv hadoop-2.9.0 hadoop
5、创建hdfs相关文件(三台机子都需要操作) 
    mkdir /home/data 
    mkdir /home/data/tmp 
    mkdir /home/data/dfs
7、创建dfs系统使用的dfs系统名称hdfs-site.xml使用:
mkdir /home/data/dfs/name 
8、创建dfs系统使用的数据文件hdfs-site.xml文件使用:
mkdir /home/data/dfs/data
7、配置环境变量(三台机子都需要操作) 
root用户下:vim /etc/profile
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar:$JRE_HOME/lib
export HADOOP_HOME=/home/bigdata/hadoop
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME:$PATH
保存退出后:source /etc/profile

 

 

 

4、配置Hadoop集群配置文件

进入Hadoop的配置文件存放的地方:cd /home/bigdata/hadoop/etc/hadoop

(1)修改 core-site.xml 文件,在configuration添加配置

 

<configuration>

  <property>

    <name>fs.defaultFS</name>

    <value>hdfs://namenode:9000</value>

  </property>

  <property>

    <name>io.file.buffer.size</name>

    <value>131072</value>

  </property>

  <property>

    <name>hadoop.tmp.dir</name>

    <value>file:/home/bigdata/hadoopdir/tmp/</value>

    <description>A base for other temporary directories.</description>

  </property>

</configuration>

(2)修改hdfs-site.xml文件

 

<configuration>

  <property>

    <name>dfs.namenode.name.dir</name>

    <value>/home/data/dfs/name</value>

  </property>

  <property>

   <name>dfs.datanode.data.dir</name>

   <value>/home/data/dfs/data</value>             

  </property>

</configuration>

(3)修改mapred-site.xml.template 文件

<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>

  <property>

    <name>mapreduce.jobtracker.http.address</name>

    <value>master:50030</value>

  </property>
  <property>

     <name>mapred.job.tracker</name>
    <value>master:9001</value>

  </property>

</configuration>

(4)修改 yarn-site.xml文件

<configuration>

<!-- Site specific YARN configuration properties -->
        <property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
        </property>
        <property>                                                               
          <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
               <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
     <property>
               <name>yarn.resourcemanager.hostname</name>
               <value>namenode</value>
       </property>
        <property>
               <name>yarn.resourcemanager.address</name>
               <value>namenode:8032</value>
       </property>
       <property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>namenode:8030</value>
       </property>
       <property>
            <name>yarn.resourcemanager.resource-tracker.address</name>
             <value>namenode:8031</value>
      </property>
      <property>
              <name>yarn.resourcemanager.admin.address</name>
               <value>namenode:8033</value>
       </property>
       <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>namenode:8088</value>
       </property>
</configuration>

(5)修改slave文件

在文件中注释掉localhost

并添加节点名称: 
        namenode    
        datanode1
    datanode2

5、搭建集群

 
 

1格式hadoop文件:hadoop  namenode -format

2发送dfs内容给Slave1:scp  -r /home/data/dfs/*  datanode1:/home/bigadata/hadoopdir/dfs

3发给dfs内容给Slave2:scp  -r /home/data/dfs/*  datanode2:/home/bigadata/hadoopdir/dfs

4发送hadoop文件给数据节点:scp -r /home/bigadata/hadoop/*  datanode1:/home/bigadata/hadoop/ 
                       scp -r /home/bigadata/hadoop/*  datanode2:/home/bigadata/hadoop/ 

5、启动集群

进入sbin:cd /home/bigdata/hadoop/sbin
启动Hadoop:./start-all.sh

使用jps 命令查看启动情况(没有这个命令的需要安装 yum install jps*) 

 

登录网页查看:http://Master:50070  (查看live node)    查看yarn环境(http://Master/8088)

 

遇到的问题:

1、namenode: Error: JAVA_HOME is not set and could not be found.

解决方案:进入 vim /home/bigdata/hadoop/etc/hadoop/hadoop-env.sh

把JAVA_HOME修改为:

export JAVA_HOME=/home/bigdata/jdk

 

如有不懂,可添加QQ问我,一起交流,一起进步:1162492808