Hadoop集群搭建-完全分布式

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

文章目录

        • 1. 服务器准备
        • 2. 网络环境准备
        • 3. 服务器系统设置
        • 4. JDK环境安装
        • 5. Hadoop安装
        • 6. Hadoop文件配置:
          • hadoop-env.sh(hadoop运行环境相关脚本)
          • core-site.xml(hadoop核心配置)
          • hdfs-site.xml(分布式文件系统HDFS相关配置)
          • mapred-site.xml(MapReduce相关配置)
          • yarn-site.xml(Yarn相关配置)
          • slaves文件(里面写从节点所在的主机名,会在这些主机上启动DataNode)
          • 关于配置文件
        • 7. 将Hadoop添加到环境变量
        • 8. 使用scp将配置文件发送给其他节点机器
        • 9. 格式化NameNode
        • 10. 启动
        • 11. 查看集群UI
        • 12. 运行MapReduce程序

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> 
        
        <property>
            <name>fs.defaultFSname>
            
            <value>hdfs://node-01:9000value>
        property>
        
        
        <property>
            <name>hadoop.tmp.dirname>
            <value>/opt/module/hadoop-2.6.0/tmpvalue>
        property>
    configuration>    
    
  3. hdfs-site.xml(分布式文件系统HDFS相关配置)
    <configuration>
        
        
        <property>
            <name>dfs.namenode.secondary.http-addressname>
            
            <value>node-02:50090value>
        property>
        
        
        <property>
            <name>dfs.replictionname>
            <value>2value>
        property>
        
    configuration> 
    
  4. mapred-site.xml(MapReduce相关配置)
    # 文件夹中只有mapred-site.xml.template模板文件,需要复制一份使用
    mv mapred-site.xml.template mapred-site.xml
    
    <configuration>
        
        <property>
            <name>mapreduce.framework.namename>
            <value>yarnvalue>
        property>
         
     
     <property>
         <name>mapreduce.jobhistory.addressname>
         <value>node-01:10020value>
     property>
     <property>
         <name>mapreduce.jobhistory.webapp.addressname>
         <value>node-01:19888value>
     property>
    
    configuration>
    
  5. yarn-site.xml(Yarn相关配置)
    <configuration>
        
         
        <property>
            <name>yarn.resourcemanager.hostnamename>
            <value>node-01value>
        property>
        
        
        <property>
            <name>yarn.nodemanager.aux-servicesname>
            <value>mapreduce_shufflevalue>
        property>
        
        
     <property>
         <name>yarn.log-aggregation-enablename>
         <value>truevalue>
     property>
     
     <property>
         <name>yarn.log-aggregation.retain-secondsname>
         
         <value>604800value>
     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

你可能感兴趣的:(Hadoop)