Hadoop集群搭建-完全分布式

本文通过12个步骤实现Hadoop集群的完全分布式搭建
刚刚入门,如有错误请指出

1. 服务器准备

VMware Workstation Pro 15.5

三台 Centos 6.5 64bit

Apache Hadoop 2.6.0

3节点为例搭建,角色分配:

节点 角色分配
node-01 NameNode DataNode ResourceManager
node-02 DataNode NodeManager SecondaryNameNode
node-03 DataNode NodeManager

2. 网络环境准备

采用NAT方式联网,并设置静态ip

vim /etc/sysconfig/network-scripts/ifcfg-eth0
# 修改这两个值
ONBOOT=yes
BOOTPROTO=static
# 添加三个值
# IP地址
IPADDR=192.168.56.139
# 网关
GATEWAY=192.168.56.2
# 子网掩码,默认255.255.255.0
NETMASK=255.255.255.0

3. 服务器系统设置

  • 创建一个一般用户(可选)

    # 创建一个一般用户
    useradd linux123
    passwd linux123
    # 并把这个用户加到sudoers
    vim /etc/sudoers
    slave ALL=(ALL)		NOPASSWD:ALL
    # 创建供这个用户操作的文件夹,并更改所有权
    mkdir /opt/software /opt/module
    chown linux123:linux123 /opt/software /opt/module
    
  • 同步时间

    • 手动同步集群各机器时间

      data -s "2020-02-12 02:02:02"
      
    • 网络同步时间

      ntpdate ntp1.aliyun.com
      
  • 设置主机名

    注意:主机名不能有下划线!!!

    vim /etc/sysconfig/network
    NETWORKING=yes
    HOSTNAME=node-01
    # 配置完成reboot后生效
    
  • 配置IP、主机名映射

    vim /etc/hosts
    192.168.56.128	node-01
    192.168.56.129	node-02
    192.168.56.130	node-03
    
  • 配置ssh免密登录

    # 生成ssh免密登录密钥
    ssh-keygen -t rsa  (四个回车)
    # 执行完后生成:id_rsa(私钥)、id_rsa.pub(公钥)
    # 将公钥拷贝到要免密登录的目标机器上(包括本机)
    ssh-copy-id node-01
    
  • 配置防火墙

    # 查看防火墙状态
    service iptables status
    # 关闭防火墙
    service iptables stop
    # 查看防火墙开机自启状态
    chkconfig --list iptables
    # 关闭防火墙开机自启
    chkconfig iptables off
    

4. JDK环境安装

  • 首先检查机器是否自带java相关包

    rpm -qa | grep java
    # java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
    # tzdata-java-2013g-1.el6.noarch
    # java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
    # 出现类似以上三条全部卸载即可:
    rm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
    rm -e --nodeps tzdata-java-2013g-1.el6.noarch
    rm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
    # 或
    rpm -qa | grep java | xargs rpm -e --nodeps
    
  • 安装JDK8

    # 上传安装包后:以jdk-8u241-linux-x64.tar.gz为例
    # 解压安装包
    tar zxvf jdk-8u241-linux-x64.tar.gz -C /root/apps
    # 配置环境变量 
    vim /etc/profile
    export JAVA_HOME=/root/apps/jdk1.8.0_241
    export PATH=$PATH:$JAVA_HOME/bin
    # 刷新配置
    source /etc/profile
    

5. Hadoop安装

# 上传安装包后:以hadoop-2.6.0.tar.gz为例
# 解压安装包
tar zxvf hadoop-2.6.0.tar.gz 

6. Hadoop文件配置:

一般在主节点进行修改,完毕后scp下发给其他各个从节点机器

配置文件在 hadoop/etc/hadoop下

  1. hadoop-env.sh(hadoop运行环境相关脚本)
    # 配置JAVA_HOME
    export JAVA_HOME=jdk路径
    
  2. core-site.xml(hadoop核心配置)
    <configuration> 
        <!-- 指定hadoop所使用的文件系统的地址(HDFS中NameNode的地址),默认是linux文件系统-->
        <property>
            <name>fs.defaultFS</name>
            <!-- 文件系统://主机名:端口号 -->
            <value>hdfs://node-01:9000</value>
        </property>
        
        <!-- 指定hadoop运行时所产生文件的存储目录,默认/tmp/hadoop-${user-name} -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/usr/local/hadoop-2.8.4/tmp</value>
        </property>
    </configuration>    
    
  3. hdfs-site.xml(分布式文件系统HDFS相关配置)
    <configuration>
        
        <!-- 指定2nn的位置 -->
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <!-- 主机名:端口号 -->
            <value>node-02:50090</value>
        </property>
        
        <!-- 指定HDFS的副本数量,默认:3 -->
        <property>
            <name>dfs.repliction</name>
            <value>2</value>
        </property>
        
    </configuration> 
    
  4. mapred-site.xml(MapReduce相关配置)
    # 文件夹中只有mapred-site.xml.template模板文件,需要复制一份使用
    mv mapred-site.xml.template mapred-site.xml
    
    <configuration>
        <!-- 指定mr运行时框架,指定为yarn,默认为local(使用本地模式模拟分布式计算环境) -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
         
     <!-- 配置历史服务器 -->
     <property>
         <name>mapreduce.jobhistory.address</name>
         <value>node-01:10020</value>
     </property>
     <property>
         <name>mapreduce.jobhistory.webapp.address</name>
         <value>node-01:19888</value>
     </property>
    
    </configuration>
    
  5. yarn-site.xml(Yarn相关配置)
    <configuration>
        
         <!-- 指定Yarn中ResourceManager的地址 -->
        <property>
            <name>yarn.resourcemanager.address</name>
            <value>node-01</value>
        </property>
        
        <!-- NodeManager上运行的附属服务 -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        
        <!-- 日志聚集功能使能 -->
     <property>
         <name>yarn.log-aggregation-enable</name>
         <value>true</value>
     </property>
     <!-- 日志保留时间设置 7 天 -->
     <property>
         <name>yarn.log-aggregation.retain-seconds</name>
         <!-- 604800为秒数 -->
         <value>604800</value>
     </property>
     
    </configuration>
    
  6. slaves文件(里面写从节点所在的主机名,会在这些主机上启动DataNode)
    node-01
    node-02
    node-03
    
  7. 关于配置文件
    • 在Hadoop官方文档中有几个默认的配置文件:

    ***-default.xml:这里面是hadoop的默认配置选项,如果用户没有更改,这里面的配置将生效

    • 上面手动修改的是:

    ***-site.xml:这里面是用户需要自定义的配置选项

7. 将Hadoop添加到环境变量

vim /etc/profile
export HADOOP_HOME=/export/server/hadoop-2.6.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile

8. 使用scp将配置文件发送给其他节点机器

# hadoop安装包
# scp -r 文件 用户名@主机名:目录
scp -r /export/server/hadoop-2.6.0 root@node-02:/export/server/
# 环境变量
scp -r /etc/profile root@node-02:/etc/  # 并再其他机器上source /etc/profile

9. 格式化NameNode

hdfs namenode -format
# 或 hadoop namenode -format

10. 启动

  • 单个节点逐个启动(脚本位于$HADOOP_HOME/sbin目录下)

    ### 如果想要停止某个节点上某个角色,只需要把命令中的start改为stop即可
    # 在主节点上启动HDFS NameNode:
    hadoop-daemon.sh start namenode
    # 在每个从节点上启动HDFS DataNode:
    hadoop-daemon.sh start datanode
    # 在主节点上启动YARN ResourceManager:
    yarn-daemon.sh start resourcemanager
    # 在每个从节点上启动YARN NodeManager
    yarn-daemon.sh start nodemanager
    
  • 脚本一键启动

    前提:需要配置slaves文件和ssh免密登录

    ### 停止改为stop即可
    # 启动HDFS:
    $HADOOP_HOME/sbin/start-dfs.sh
    # 启动YARN:
    $HADOOP_HOME/sbin/start-yarn.sh
    
  • 启动历史服务器

    ### 停止改为stop即可
    mr-jobhistory-daemon.sh start historyserver
    

11. 查看集群UI

NameNode:
http://NN_host:port/	port默认50070
ResourceManager:
http://RM_host:port/	port默认8088

12. 运行MapReduce程序

$HADOOP_HOME/share/hadoop/mapreduce下有官方自带的MapReduce程序,可以通过如下命令进行运行测试

# 1.计算圆周率
hadoop jar hadoop-mapreduce-example-2.6.0.jar pi 20 50
# 2.计算单词数
hadoop jar hadoop-mapreduce-examples-2.6.0.jar wordcount /hello/input /hello/output
# 创建文件夹
hdfs dfs -mkdir /hello
发布了4 篇原创文章 · 获赞 0 · 访问量 358

猜你喜欢

转载自blog.csdn.net/u014532291/article/details/104324524