Hadoop3.1.2三节点环境搭建


搭建hadoop3.1.2 三节点完全分布式环境。

版本区别

Hadoop官网目前提供3.x和2.x两个系列的稳定版本。两者主要有下面几点区别:

Hadoop 2.xHadoop 3.x
1. Java版本6是最低要求。最低要求是Java版本8。因为大多数依赖库文件都来自java8。
2. HDFS支持复制以实现容错功能。HDFS支持擦除编码。(擦除编码是一种用于持久存储信息的技术,与复制相比,可节省大量空间)
3.引入了YARN时间轴服务YARN时间轴服务v.2(提高了可伸缩性和可靠性)
4.带有Bug的有限Shell脚本。许多新的Unix shell API,以及旧的错误已修复。
5.由于YARN,地图缩小变得很快。地图缩小变得更快,特别是在地图输出收集器和混洗作业上减少了30%。
6.引入了辅助名称节点作为备用节点。支持2个以上的namenode
7.默认端口在Linux端口范围内冲突。这导致端口保留失败。端口范围已优化。
8. Hadoop不支持Microsoft文件系统。Hadoop现在支持与Microsoft Azure Data Lake集成,以替代Hadoop兼容文件系统
9.单个DataNode管理多个磁盘。内部的磁盘可能会导致DataNode内部的严重偏斜。添加了新功能内部DataNode平衡,可通过hdfs磁盘平衡器CLI调用该功能。
10.主机需要设置“ JAVA和Hadoop的堆大小”任务。配置守护程序堆大小的新方法。值得注意的是,现在可以根据主机的内存大小进行自动调整,并且不建议使用HADOOP_HEAPSIZE变量

安装步骤

安装过程总体分为下面几个部分:

(1)准备需要的主机

(2)安装JDK 和hadoop

(3)配置Hadoop。

(4)配置SSH无密码连接。

(5)格式化HDFS。

(6)启动Hadoop并验证安装。

  • (1)准备需要的主机

    本教程搭建三节点hadoop集群,需要三台主机。可以是虚拟机或者云主机。虚拟机需要配置好静态IP,并设置好主机名。(可以采用默认主机名,这里为配置管理方便使用下面主机名)

    IP主机名称作用
    192.168.111.200masternamenode
    192.168.111.201slaver01datanode1
    192.168.111.202slaver02datanode2
    #查看主机名命令
    cat /etc/hosts
    #修改主机名命令
    hostnamectl set-hostname master
    

    配置Hosts如下:

    192.168.111.200 master
    192.168.111.201 slaver01
    192.168.111.202 slaver02
    

    准备好主机后,开始下一步。

  • (2)安装JDK和Hadoop (三台机器都操作一遍)

    安装jdk,下载比较稳定的jdk1.8安装包后解压到/opt下

    tar -zxf jdk-8u201-linux-x64.tar.gz -C /opt/
    cd /opt/
    mv jdk1.8.0_201 java
    

    安装hadoop3.1.2,下载hadoop3.1.2安装包后解压:

    tar -zxf hadoop-3.1.2.tar.gz -C /opt/
    

    配置环境变量

    vim /etc/profile
    

    添加如下内容:

    #java环境变量
    export JAVA_HOME=/opt/java
    export PATH=$JAVA_HOME/bin:$PATH 
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
    #hadoop环境变量
    export HADOOP_HOME=/opt/hadoop-3.1.2
    export PATH=.:$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
    
    

    使环境变量生效

    source /etc/profile
    

    测试jdk和hadoop:安装成功会输出相关版本信息

    java -version
    hadoop version
    
  • (3)配置hadoop(只在master操作,后边通过复制配置文件到另两台)

    • 修改hadoop的java环境变量
    vi  /opt/hadoop-3.1.2/etc/hadoop/hadoop-env.sh
    

在这里插入图片描述

  • core-site.xml

    vim /opt/hadoop-3.1.2/etc/hadoop/core-site.xml
    

    配置下面信息:

        <configuration>
            <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
            </property>
             <property>
                <name>hadoop.tmp.dir</name>
                <value>/root/zx/bigdata</value>
             </property>
             <property>
                <name>hadoop.proxyuser.root.hosts</name>
                <value>*</value>
             </property>
             <property>
                <name>hadoop.proxyuser.root.groups</name>
                <value>*</value>
             </property>
        </configuration>
    
  • hdfs-site.xml

    vim /opt/hadoop-3.1.2/etc/hadoop/hdfs-site.xml
    

    配置如下:

    <configuration>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>/opt/hadoop-3.1.2/dfs/data</value>
        </property>
    
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>/opt/hadoop-3.2.1/dfs/name</value>
        </property>
        <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
    </configuration>
    
  • mapred-site.xml

    vim /opt/hadoop-3.1.2/etc/hadoop/mapred-site.xml
    

    配置如下:

    <configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
            <name>mapreduce.map.memory.mb</name>
            <value>4096</value>
        </property>
    	<property>
            <name>mapreduce.reduce.memory.mb</name>
            <value>8192</value>
        </property>
        <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>
    </configuration>
    
  • yarn-site.xml

    vim /opt/hadoop-3.1.2/etc/hadoop/yarn-site.xml
    

    配置如下:

    <configuration>
    	<property>
                  <name>yarn.resourcemanager.hostname</name>
                  <value>master</value>
         </property>
    	 <property>
                  <name>yarn.resourcemanager.webapp.address</name>
                  <value>master:8088</value>
          </property>
    	  <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.resource-tracker.address</name>
                  <value>master:8035</value>
           </property>  
    
    </configuration>
    
  • workers

    vim /opt/hadoop-3.1.2/etc/hadoop/workers
    

    配置worker

    slaver01	192.168.111.201
    slaver02	192.168.111.202
    
  • 配置命令脚本的用户权限

    cd /opt/hadoop-3.1.2/sbin

    start-dfs.sh 和stop-dfs.sh添加如下:

    HDFS_DATANODE_USER=root
    HDFS_DATANODE_SECURE_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root
    

    star-yarn.sh和stop-yarn.sh添加:

    YARN_RESOURCEMANAGER_USER=root
    HADOOP_SECURE_DN_USER=yarn
    YARN_NODEMANAGER_USER=root
    
  • 复制配置文件到另外两个从节点

    for node in slaver01 slaver02; do
        scp /opt/hadoop-3.1.2/etc/hadoop/* $node:/opt/hadoop-3.1.2/etc/hadoop/;
        scp /opt/hadoop-3.1.2/sbin/* $node:/opt/hadoop-3.1.2/sbin/;
    done
    
  • (4)配置SSH无密码连接。

    三节点上分别执行:(如果都已经有生成过公钥,可跳过)

    ssh-keygen -t rsa
    

    master节点执行:

    master to slaver01

    ssh-copy-id -i ~/.ssh/id_rsa.pub  root@slaver01
    ssh slaver01
    chmod 600 ~/.ssh/authorized_keys
    exit
    

    master to slaver02

    ssh-copy-id -i ~/.ssh/id_rsa.pub  root@slaver02
    ssh slaver02
    chmod 600 ~/.ssh/authorized_keys
    exit
    

    master to master

    shh master
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    exit
    

    slaver01节点执行:

    slaver01 to master

    ssh-copy-id -i ~/.ssh/id_rsa.pub  root@master
    ssh master
    chmod 600 ~/.ssh/authorized_keys
    exit
    

    slaver01 to slaver02

    ssh-copy-id -i ~/.ssh/id_rsa.pub  root@slaver02
    ssh slaver02
    chmod 600 ~/.ssh/authorized_keys
    exit
    

    slaver01 to slaver01

    shh slaver01
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    exit
    

    slaver02节点执行:

    slaver02 to master

    ssh-copy-id -i ~/.ssh/id_rsa.pub  root@master
    ssh master
    chmod 600 ~/.ssh/authorized_keys
    exit
    

    slaver02 to slaver01

    ssh-copy-id -i ~/.ssh/id_rsa.pub  root@slaver01
    ssh slaver01
    chmod 600 ~/.ssh/authorized_keys
    exit
    

    slaver02 to slaver02

    shh slaver02
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    exit
    
  • (4)格式化HDFS

    hdfs namenode -format
    
  • (5)启动Hadoop并验证安装。

    start-all.sh
    

    通过jps命令可以查看java进程:

    root@master:~# jps
    16836 ResourceManager
    17383 Jps
    16328 NameNode
    

    访问HDFS管理界面:

    http://192.168.111.200:9870
    

在这里插入图片描述

访问hadoop管理界面:

http://192.168.111.200:8088

在这里插入图片描述

问题总结

jps命令失效
jps名令是查看系统java检查的命令。需要配置jdk的环境变量到 /root/.bash_profile中

vim /root/.bash_profile
//增加jdk的环境变量,可以通过 which java查看路径
source /root/.bash_profile

几种配置文件的区别

在CentOs中:

/etc/profile
/etc/bashrc
 
~/.bashrc
~/.bash_profile
在Ubuntu,Debian中:

/etc/profile
/etc/bash.bashrc
 
~/.bashrc
~/.profile

1./etc/profile
用来设置系统环境参数,比如$PATH. 这里面的环境变量是对系统内所有用户生效的。

2./etc/bashrc
这个文件设置系统bash shell相关的东西,对系统内所有用户生效。只要用户运行bash命令,那么这里面的东西就在起作用。

3.~/.bash_profile
用来设置一些环境变量,功能和/etc/profile 类似,但是这个是针对用户来设定的,也就是说,你在/home/user1/.bash_profile 中设定了环境变量,那么这个环境变量只针对 user1 这个用户生效.

4.~/.bashrc
作用类似于/etc/bashrc, 只是针对用户自己而言,不对其他用户生效。

一些命令

防火墙

centos:
systemctl status firewalld
1、直接关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

ubuantu查看:
ufw status
ufw disable

端口进程相关

查看某端口占用情况
netstat  -anp  |grep 8787
查看某进程名或者进程id的应用
ps axu|grep 进程名称 或者id

查看某个端口进程的命令:lsof -i:端口号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值