hadoop集群搭建

准备

  • 环境: Linux(CentOS 7)
  • jdk8
  • 安装包
    • 这里使用hadoop-2.9.2-64.tar.gz

安装

  1. 创建用户

     groupadd hadoop #创建用户组
     useradd -g hadoop hadoop #创建用户并添加用户组
     passwd hadoop  #修改用户密码
    
  2. 修改用户权限

    vim /etc/sudoers
    

    添加hadoop用户的权限如图

    在这里插入图片描述

  3. 修改所有节点的host

    vim /etc/hosts	
    

    在这里插入图片描述

    vim /etc/sysconfig/network
    

    在这里插入图片描述

    reboot  #重启  使用hadoop用户登录
    hostname #检测本地hostname是否修改成功
    

在这里插入图片描述

  1. 创建包下载目录和安装目录

    mkdir /etc/modules /etc/softwares #创建目录
    chown -g hadoop:hadoop /etc/modules /etc/softwares 修改目录用户组
    
    
  2. 安装jdk(略)

  3. 解压安装包到modules

    tar -zxvf hadoop-2.9.2-linux-64.tar.gz -C /opt/modules/
    
  4. 配置hadoop环境变量

    vim /etc/profile
    export HADOOP_HOME=/opt/modules/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
    source /etc/profile
    hadoop #验证是否配置成功
    
  5. 编写远程执行脚本和远程同步脚本

    • 所有节点安装rsync 工具

      sudo yum install -y rsync
      
    #!/bin/bash
    #远程执行脚本
    pcount = $#
    if(($pcount==0)); then
    	echo no args;
    	exit;
    fi
    
    echo --------------localhost----------------
    
    $@
    for((host=221; host<224; host++)); do
    	echo --------------hadoop$host $@-----------------------
    	ssh hadoop$host $@
    done
    
    #!/bin/bash
    #远程同步脚本
    pcount=$#
    if((pcount == 0)); then
    	echo no args;
    	exit;
    fi
    
    p1=$1
    fname='basename' $p1
    echo fname=$fname
    
    pdir='cd -P $(dirname $p1); pwd'
    echo pdir=$pdir
    user='whoami'
    for((host=222; host<224; host++)); do
    	echo --------------hadoop$host--------------------
    	rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
    done
    
    
    #授权可执行
    sudo chmod 777 xcall xsync
    
  6. 在各节点生成rsa证书, 节点间设置免密登录

    ssh-keygen -t rsa #生成rsa证书
    ssh-copy-id host #将公钥分别拷贝到当前节点以及其它节点
    
  7. 在解压xsync 节点 同步hadoop安装包, 并在各节点配置hadoop 和jdk的环境变量

    cd /opt/modules
    xsync hadoop
    
  8. 配置hadoop配置文件

在这里插入图片描述

节点角色分配 

在这里插入图片描述

- 配置集群节点 slaves

  ```shell
  vim slaves
  #添加节点
  hadoop221
  hadoop222
  hadoop223
  ```

- 配置core-site-xml

  ```xml
  <configuration>
      <!--nameNode 节点和hdfs端口-->
    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://hadoop221:8020</value>
    </property>
      <!--临时文件目录-->
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/opt/modules/hadoop/data/tmp</value>
    </property>
  </configuration>
  ```

- 配置hdfs-site.xml

  ```xml
  <configuration>
      <!--文件备份数 默认3-->
    <property>
      <name>dfs.replication</name>
      <value>2</value>
    </property>
      <!--secondNameNode节点配置-->
    <property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop222:50090</value>
    </property>
  </configuration>
  ```

- 配置mapred-site.xml

  ```xml
      <!--配置以yarn方式运行map-reduce-->
    <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
    </property>
  ```

- 配置yarn-site.xml

  ```xml
  <configuration>
    <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
    </property>
      <!--resourcemanager节点配置-->
    <property>
      <name>yarn-resourcemanager.hostname</name>
      <value>hadoop223</value>
    </property>
  </configuration>
  ```

- 以上配置完成后同步各节点配置文件

  ```shell
  pwd 
  #路径  /opt/modules/hadoop/etc
  xsync hadoop
  ```
  1. 关闭所有节点防火墙

    sudo systemctl stop firewalld
    sudo systemctl disable firewalld
    
  2. 格式化nameNode节点 启动集群

    hdfs namenode -format #在nameNode节点格式化nameNode
    sbin/start-dfs.sh #在nameNode节点启动hdfs各节点
    
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    sbin/start-yarn.sh #在resourceManager节点启动执行, 启动所有yarn节点
    
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
  3. hadoop 集群安装完成

在这里插入图片描述

其它配置

回收站

修改core-site.xml,配置垃圾回收时间为1分钟。

<property>
   <name>fs.trash.interval</name>
   <value>1</value>
  <description>设置回收站存储数据时间长度 分钟, 超过时间删除数据;默认 0 禁用回收站; </description>
</property>
<property>
   <name>fs.trash.checkpoint.interval</name>
   <value>10</value>
  <description>设置检查回收站数据是否过期, 检查的时间间隔秒 </description>
</property>
<property>
  <name>hadoop.http.staticuser.user</name>
  <value>hadoop</value>
  <description>设置回收站目录权限用户, 默认 dr.who</description>
</property>

程序删除的文件不进入回收站, 需要使用 moveToTrash()

Trash trash = New Trash(conf);
trash.moveToTrash(path);

恢复回收站数据

hadoop fs -mv /user/zcz/.Trash/Current/user/hadoop/input /user/zcz/input

清空回收站

hadoop fs -expunge
集群时间同步
时间服务器配置
  1. 检查ntp 是否安装

    rpm -qa | grep ntp
    
  2. 修改ntp配置文件

    vim /etc/ntp.conf
    
    修改1: 授权192.168.1.0 -192.168.1.255 网段上的所有汲取可以从这台机器上查询和同步时间
    restrict 192.168.1.0 mask 255.255.255.255 nomodify notrap
    修改2: 集群在局域网中, 不使用其它互联网上的时间
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
    添加3: 当该节点丢失网络连接, 依然可以采用本地时间作为时间服务器为集群中的其它节点提供时间同步
    server 127.127.1.0
    fudge 127.127.1.0 stratum 10
    
  3. 修改 /etc/sysconfig/ntpd文件

    让硬件时间与系统时间一起同步

    vim /etc/sysconf/ntpd
    SYNC_HWCLOCK=yes  
    
  4. 重新启动ntpd服务

    service ntpd restart
    
  5. 设置ntpd服务开机启动

    systemctl enable ntpd
    #chkconfig ntpd on
    
其它服务器配置
  1. 在其它机器配置10分钟与时间服务器同步一次

    crontab -e
    编写定时任务如下
    */10 * * * * ntpdate ip
    
    
  2. 修改任意机器时间

    date -s "2018-11-11 11:11:11"
    
  3. 十分钟后查看是否时间同步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值