大数据学习笔记(四)Hadoop集群(完全分布式)

该博客详细介绍了如何搭建一个最小规模的Hadoop集群,包括克隆虚拟机、配置主机名、IP地址,使用rsync同步文件,编写jpsall脚本查看节点状态,配置HDFS、YARN及MapReduce,最后进行集群启动和检查。
摘要由CSDN通过智能技术生成

一、Hadoop集群(完全分布式)

1. 准备工作

  • 1.1 拿模板机克隆三台虚拟机(DT100,DT101,dt102),其中DT100作为master,DT101,102作为slaves

    • A.在master安装必要工具

      yum -y install vim
      yum -y install lrzsz
      
    • B.上传jdk和hadoop安装包到/opt/software

    • C.创建普通用户dt,修改密码为dt

      useradd dt
      passwd dt
      
    • D.修改hosts文件,增加主机名与IP映射.

    • E.修改windows的hosts映射.

      C:\Windows\System32\drivers\etc

    • F. 修改每个机器的静态IP地址

    • G.修改主机名

    • H.为xshell工具创建连接

  • 1.2 使用rsync 编写分发脚本

    cp命令 与scp和rsync

    cp -r source dest     #从s拷贝到d
    cp -r /dt/123  /dt/bcd  
    scp -r s d # 远程拷贝
    scp -r dt100:/opt/module  dt101:/opt
    rsync  -av  s     d 
    注意:rsync 只能有一个远程和一个本地,不能同时为远程操作.
    总结:
    1.scp是内容拷贝,rsync是归档拷贝(权限,文件创建时间相同)
    2.scp两端都可以是远程,rsync只能有一个是远程.
    3.内容拷贝适合第一次,第N次的时候只想把更改的文件发送过去的话,使用rsync它只拷贝差异部分.
    集群中同步文件,使用rsync 更方便.
    
    

    使用rsync编写一个分发脚本

    vi  qq
    
    #!/bin/bash
    #1 获取输入参数个数,如果没有参数,直接退出
    pcount=$#
    if((pcount==0)); then
    echo no args;
    exit;
    fi
     
    #2 获取文件名称
    p1=$1
    fname=`basename $p1`
    echo fname=$fname
     
    #3 获取上级目录到绝对路径
    pdir=`cd -P $(dirname $p1); pwd`
    echo pdir=$pdir
     
    #4 获取当前用户名称
    user=`whoami`
     
    #5 循环
    for((host=101; host<103; host++)); do
            echo ------------------- hadoop   dt$host --------------
            rsync -av $pdir/$fname $user@dt$host:$pdir
    done
    
    
    
  • 1.3 编写jpsall脚本

    通过master 查看其它集群节点的jps信息

    原理:

    ​ ssh 用户名@主机地址 命令

    ​ 例如 ssh dt@101 mkdir 123

    ​ 注意:

    ​ ssh 登陆之后,不会加载profile文件环境变量.

    ​ ssh登陆之后,只会加载/etc/bashrc文件中的配置信息.

    ​ 两种解决方案:

    ​ A.通过代码加载profile

    ​ source /etc/prifile

    ​ B.使用命令程序的绝对路径

    ​ /opt/m/jdk/jps

    ​ 不建议直接修改bashrc,因为所有集群机器都要修改。

  • vi jpsall
    #!/bin/bash
    for((i=100;i<103;i++)) do
            echo --------------------------- dt$i ----------------------
            ssh dt@dt$i /opt/module/jdk1.8.0_144/bin/jps
    done 
    :wq!
    sudo cp jpsall /bin/	
    
  • 1.4 设置共享文件夹(可选)

    右键虚拟机名称->设置->选项(选项卡)->将共享文件夹设置为"总是启用"->添加需要共享的文件夹->确定
    
    共享之后,在linux系统中的/mnt/hgfs 文件夹中读取内容
    
    

2. 集群规则

​ 假设当前要做一个最小规模集群,其中3台机器负责存储文件.

​ 角色如下:

​ NN(1) DN(3) 2NN(1) RM(1) NM(3)

​ NN与2NN不应该放在同一个服务器上.

三、集群配置

#### 1. 配置3台服务器的NPPFTP

2. 修改核心配置文件core.site.xml(nn配置)

 <property>
        <name>fs.defaultFS</name>
        <value>hdfs://dt100:9000</value>
 </property
 <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/m/h/data</value>
 </property

3.配置HDFS

  • A.hadoop.env.sh 配置JAVA_HOME

  • B.hdfs.site.xml,默认副本数3

     <property>
            <name>dfs.replication</name>
            <value>3</value>
     </property>
    <!-- 2NN配置-->
     <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>dt101:50090</value>
     </property>
    

####4.Yarn配置

  • A.yarn.env.sh 配置JAVA_HOME

  • B.yarn.site.xml

    <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
    </property>
    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>dt102</value>
    </property>
    

####5.MapReduce配置

  • A.mapred.env.sh 配置JAVA_HOME

  • B.mapred.site.xml

    <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
    </property>
    

####6.分发配置文件

qq etc

7.手工启动

  • A.先格式化NN

    hdfs namenode -format
    
  • B.在DT100上启动NN

    hadoop-daemon.sh start namenode
    jps
    
  • C.启动DN(DT100,DT101,DT102)

    hadoop-daemon.sh start datanode
    
  • D.在DT101启动2NN

    hadoop-daemon.sh start secondarynamenode
    
  • E.http://dt100:50070 查看启动情况

  • F.启动RM(102)

    yarn-daemon.sh start resourcemanager
    
  • G.启动NM(100,101,102)

    yarn-daemon.sh start nodemanager
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值