Centos7中搭建Hadoop3.2(Centos6、Centos7搭建Hadoop2、Hadoop3)完整详细操作步骤

    虽然企业开发、生产一般多用比较稳定较前版本,但 自己在学习新技术时比较喜欢用较新版本软件,而网上更多的资料是Centos6中搭建Hadoop2,故在Centos7中搭建Hadoop3.2时,参考的是网上的前者资料,遇到很多问题,故在搭建通hadoop后,将搭建过程整理了一遍,并在文中将影响搭建的Centos6和Centos7差别、Haoop2和Hadoop3的区别详细说明,和有需要的同行分享一下。

本文内容包括三部分:

              一、linux环境的准备

              二、jdk的安装

              三、Hadoop安装过程

环境准备为:在window系统上安装vmware,在vmware中安装三台Centos7虚拟机,ip分别为

 192.168.99.122(作为主节点机)         192.168.99.129(从节点机)        192.168.99.135 (从节点机)   

hadoop为3.2版本。

Hadoop集群搭建详细步骤(Centos6或Centos7,Hadoop2或Hadoop3)
1、配置好虚拟机的网络(可选择Net模式或桥接模式):
    方式一(桌面版centos):通过Linux图形化界面进行修改(桌面版centos)
            进入Linux图形界面-->右键点击右上方的两个小电脑的图标-->点击Edit connections-->点击add按钮
            -->添加IP:192.168.99.122 子网掩码:255.255.255.0 网关:192.168.99.1 -->apply
    方式二(适用于所有情况):修改配置文件方式:
        vim /etc/sysconfig/network-scripts/ifcfg-ens33
            DEVICE=ens33                #网卡接口名称
            BOOTPROTO=static            #启用地址协议 --static:静态协议 --bootp协议 --dhcp协议
            HWADDR=00:0C:29:0E:02:04    #网卡设备MAC地址,根据自己虚拟机对应的网卡信息配置                
            IPV6INIT=yes                                 #ipv6初始化(IPV6现在未启用,不考虑其影响)
            NM_CONTROLLED=yes            #network manger的参数,实时生效,修改后无需要重启网卡立即生
            ONBOOT=yes                    #系统启动时是否自动加载
            TYPE=Ethernet                #网卡类型
            UUID=099c0329-467e-4d4a-80d9-dbec407cb845
            IPADDR=192.168.99.150        #网卡IP地址  
            NETMASK=255.255.255.0        #网卡网络地址 
            GATEWAY=192.168.99.2        #网卡网关地址        
2、同步三台服务器时间(采用以下任何一种即可):
    (1)手动同步集群各机器时间:
            date -s "2019-03-23 10:50:00"
    (2)网络同步时间
            yum install ntpdate
            ntpdate cn.pool.ntp.norg
3、修改各虚拟主机机名
    参考资料:https://cloud.tencent.com/developer/article/1398575
    Centos6方式:vi /etc/sysconfig/network
                NETWORKING=yes
                HOSTNAME=node-1
    Centos7方式:
            vim /etc/hostname (Centos7方式)
            node-1
4、修改主机名和ip是的映射关系
    vi /etc/hosts
    
    192.168.99.122    node-1
    192.168.99.129    node-2
    192.168.99.135    node-3
5、关闭防火墙
    #查看防火墙状态
        Centos6方式: service iptables status
        Centos7方式:firewall-cmd --state
    #关闭防火墙
        Centos6方式: service iptables stop
        Centos7方式:systemctl stop firewalld.service
    #查看防火墙开机启动状态
        Centos6方式: chkconfig iptables --list
        Centos7方式:systemctl status firewalld.service
    #关闭防火墙开机启动
        Centos6方式: chkconfig iptables off
        Centos7方式:systemctl disable firewalld.service
6、配置ssh免登陆
    #生成ssh免登陆密钥
        ssh-keygen -t rsa (四个回车)
    执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
    将公钥拷贝到要免密登录的目标机器上
    首先要给自己拷贝一个
        ssh-copy-id node-1    提示输入密码:输入密码
    再次给另外两台机子拷贝
        ssh-copy-id node-2    提示输入密码:输入密码
        ssh-copy-id node-3    提示输入密码:输入密码
    验证免密登录是否配置成功:
    ssh node-1        无需输入密码即可进入node-1
    exit    
    ssh node-2        无需输入密码即可进入node-1
    exit    
    ssh node-3        无需输入密码即可进入node-1
    exit    
    因为node-1是主节点,所有操作都是在node-1上完成,所以只需在node-1配置其对自己、对node-2、node-3免密登录,无需配置其他免密。
    如果因网络环境恶劣,要求必须开启防火墙,则需要配置相应的访问规则。
7、linux中jdk安装:
    参考资料:https://www.cnblogs.com/Dylansuns/p/6974272.html
    (1)检查系统中是否已经有jdk,一般linux中会有默认的openjdk(hadoop中需要的是sun公司<现在sun公司被orcale公司收购>的jdk):
            java -version 
    (2)展示信息:openjdk version "1.8.0_102"
                OpenJDK Runtime Environment (build 1.8.0_102-b14)
                OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)
    (3)检测jdk安装包:[root@localhost centos]# rpm -qa | grep java
                显示:java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
                    python-javapackages-3.4.1-11.el7.noarch
                    tzdata-java-2016g-2.el7.noarch
                    javapackages-tools-3.4.1-11.el7.noarch
                    java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
                    java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64
                    java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
    (4)卸载openjdk:<1>:[root@localhost centos]# rpm -e --nodeps tzdata-java-2016g-2.el7.noarch
                       [root@localhost centos]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
                       [root@localhost centos]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
                       [root@localhost centos]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
                       [root@localhost centos]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64
        或者使用这种方式<2>:[root@localhost jvm]# yum remove *openjdk*
    (5)查看卸载情况:rpm -qa | grep java 
    (6)结果:[root@localhost centos]# rpm -qa | grep java
            python-javapackages-3.4.1-11.el7.noarch
            javapackages-tools-3.4.1-11.el7.noarch
    (7)安装新的jdk:首先到jdk官网上下载你想要的jdk版本,下载完成之后将需要安装的jdk安装包放到Linux系统指定的文件夹下
    (上传文件命令rz,或者SCRT的Alt+p),并且命令进入该文件夹下,解压 jdk-8u131-linux-x64.tar.gz安装包:tar -zxvf jdk-8u201-linux-x64.tar.gz
    (8)设置环境变量:[root@localhost centos]# vim /etc/profile
            在最前面添加:
            export JAVA_HOME=/usr/centos/jdk1.8.0_201
            export JRE_HOME=${JAVA_HOME}/jre
            export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
            export  PATH=${JAVA_HOME}/bin:$PATH
    (9)执行profile文件,使对jdk的配置生效:
        [root@localhost centos]# source /etc/profile
    (10)检查新安装的jdk:
        [root@localhost centos]# java -version
        显示如下,则安装成功:java version "1.8.0_201"
                              Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
                              Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
    (11)查看jdk安装路径位置:[root@localhost centos]# which java
                显示:/usr/centos/jdk1.8.0_201/bin/java
8、Hadoop配置文件的修改:
    Hadoop安装主要就是配置文件的修改,一般在主节点进行修改,完毕后scp下发给其他各个从节点机器,避免在每台机子上单独修改
    配置文件的麻烦。将hadoop压缩包上传至linux系统,并进行解压:tar -zxvf hadoop-3.2.0.tar.gz,得到hadoop-3.2.0,
    对其进行重命名为hadoop:rm hadoop-3.2.0 hadoop。进入配置文件:cd /usr/centos/hadoop/etc/hadoop/ ,将会进入配置文件目录。
    (1)第一个:文件中设置的是hadoop运行时需要的环境。JAVA_HOME时必须设置的,即使我们当前的系统中设置了
        JAVA_HOME,他也是不认识的,因为Hadoop即使是在本机上运行,他也是把当前的执行环境当成远程服务器。
        vim hadoop-env.sh
        export JAVA_HOME=/usr/centos/jdk1.8.0_201
    (2)第二个:core-site.xml
        hadoop的核心配置文件,有默认的配置项 core-default.xml。
        hdfs://        :hdfs文件系统
        tfs://        :淘宝文件系统
        file://        :本地文件系统
        gfs://        :google文件系统
        node-1:主节点名
        9000:端口号
        vim core-site.xml
        <configuration>
            <!-- 指定hadoop所使用的的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
            <property>
                <name>fs.defaultFS</name>
                <value>hdfs://node-1:9000</value>                
            </property>
            <!-- 指定hadoop运行时产生的文件的存储目录默认 /tmp/hadoop-${usr.name} -->
            <property>
                <name>hadoop.tmp.dir</name>
                <value>/export/data/</value>
            </property>
        </configuration>
    (3)第三个:hdfs-site.xml
        vim hdfs-site.xml
        <configuration>
            <!-- 指定HDFS副本数量,不写时默认为3 -->
            <property>
                <name>dfs.replication</name>
                <value>2</value>
            </property>
            <!-- 指定secondary所在服务器及指定端口 -->
            <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>node-2:50090</value>
            </property>
        </configuration>
    (4)第四个:mapred-site.xml
        如果只有mapred-site.xml.template而没有mapred-site.xml,则复制并修改其名字为mapred-site.xml:
        cp mapred-site.xml.template mapred-site.xml
        如果有则直接修改:
        vim mapred-site.xml
        <configuration>
            <!-- 指定mr运行时框架,这里指定在yarn上,默认是local -->
            <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
            </property>
        </configuration>
    (5)第五个:yarn-site.xml
        vim yarn-site.xml
        <configuration>
            <!-- 指定YARN的老大(ResourceManager)的地址 -->
            <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>node-1</value>
            </property>
            <!-- NodeManager上运行的附属服务。需要配置成mapreduce_shfffle,才可运行MapReduce程序默认值 -->
            <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
            </property>
        </configuration>
    (6)第六个:slaves文件,里面写上从节点所在主机名字
        hadoop2中为slaves文件:vim slaves
        hadoop3.x中slaves名字改为workers:vim workers
        进入workers文件后,删掉localhost,新增如下(注意必须换行):
        node-1
        node-2
        node-3
9、将hadoop添加到环境变量中
    vim /etc/profile
    添加:
        export HADOOP_HOME=/usr/centos/hadoop/
    修改PATH为:
        export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    重新加载配置文件:
        source /etc/profile
10、将node-1主机上配置的hadoop复制到node-2、node-3主机:
    scp -r /usr/centos/hadoop/ root@node-2:/usr/centos/
    scp -r /usr/centos/hadoop/ root@node-3:/usr/centos/
11、将配置文件profile从node-1拷贝到node-2、node-3:
    scp -r /etc/profile root@node-2:/etc/profile
    scp -r /etc/profile root@node-3:/etc/profile
    然后重新加载node-2、node-3配置文件。
12、hadoop集群的启动:
    要启动Hadoop集群,需要启动HDFS和YARN两个集群。
    注意:  (1)首次启动时,必须要对其进行格式化操作。本质上是一些清理和准备工作(创建文件),因为HDFS在物理上还是不存在的。
            (2)格式化之后,集群启动成功,后续再也不需要进行格式化,因为每次格式化会产生一个id,多次格式化,
                 产生多个id,或出现匹配问题。
            (3)格式化操作在hdfs集群的主角色(namenode)所在的机器上操作(node-1),不要在从角色上操作(node2、node3)!
                    格式化命令与版本关系:  hadoop1时:hadf namenode -format 
                                            hadoop2时:hadf namenode -format 或者hadoop namenode -format
                                            hadoop3时:hadoop namenode -format
    启动方式一:单节点逐个启动方式:
            (1)在主节点上使用以下命令启动HDFS NameNode:
                    hadoop-daemon.sh start namenode
            (2)在每个节点上使用以下命令启动HDFS DataNode:
                    hadoop-daemon.sh start datanode
            (3)在主节点上使用以下命令启动YARN ResourceManager:
                    yarn-daemon.sh start resourcemanager
            (4)在每个从节点上使用以下命令启动YARN nodemanager:
                    yarn-daemon.sh start nodemanager
            以上脚本位于$HADOOP_PREFIX/sbin/目录下。如果想要溶质某个节点上某个角色,只需把命令中的start改为stop即可。
    启动方式二:脚本一键启动:
                如果配了 etc/hadoop/workers(Hadoop2为etc/hadoop/slaves) 和ssh免密登录,则可以是用程序脚本启动。
                所有Hadoop两个集群的相关进程,在主节点所设定的机器上上执行。
                进入到$HADOOP_PREFIX/sbin/目录下,发现有很多启动、关闭命令文件。
                    启动集群:
                            start-dfs.sh
                            start-yarn.sh
                    停止集群:stop-dfs.sh
                              stop-yarn.sh
                如果启动报:ERROR: Attempting to operate on hdfs namenode as root
                            ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
                则需在
                在/hadoop/sbin路径下:将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数
                    #!/usr/bin/env bash
                    HDFS_DATANODE_USER=root
                    HADOOP_SECURE_DN_USER=hdfs
                    HDFS_NAMENODE_USER=root
                    HDFS_SECONDARYNAMENODE_USER=root
                还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:
                    #!/usr/bin/env bash
                    YARN_RESOURCEMANAGER_USER=root
                    HADOOP_SECURE_DN_USER=yarn
                    YARN_NODEMANAGER_USER=root
    查看启动状态命令:jps
    回显:21941 ResourceManager
          22069 NodeManager
          21528 DataNode
          22408 Jps
          21402 NameNode
    则表示启动成功。

13、访问hdfs和yarn:

          (1)先在自己Windows电脑中配置hotsts文件(路径:C:\Windows\System32\drivers\etc)

        192.168.99.122 node-1
        192.168.99.129 node-2
        192.168.99.135 node-3

         (2)在浏览器中访问hdfs和yarn:

            hdfs:Hadoop2:node-1:50077

                    Hadoop3:node-1:9870

            yarn:

                    Hadoop2和Hadoop3相同:node-1:8088

hadf成功标志:

yarn成功标志:

关于hadoop配置文件:
    ***-default.xml    这里面配置了hadoop默认的配置选项,如果用户没有更改,那么这里面的选项将会生效。
    ****-site.xml    这里面配置了用户需要自定义的配置选项。
    site中的配置选项大于default中的配置,如果用户用配置的话,则会覆盖默认的配置选项。

发布了20 篇原创文章 · 获赞 24 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_41267342/article/details/88775095