02.从零搭建Hadoop集群

192.168.174.101 hadoop101。编写定时任务如下:/10 * * * /usr/sbin/ntpdate hadoop

一、从零搭建集群

  1. 新建一个CentOS7虚拟机
节点名称:hadoop101

IP:192.168.174.101

用户名及密码: root --> aaaaaa
      hadoop --> aaaaaa

2.关闭防火墙

sudo service iptables stop

sudo chkconfig iptables off

3.设置静态IP、修改主机名

centOS7安装时就可以直接界面化设置静态IP

  • 配置/etc/hosts
vim /etc/hosts

> 192.168.174.101   hadoop101
> 192.168.174.102   hadoop102
> 192.168.174.103   hadoop103
> 192.168.174.104   hadoop104

4.配置hadoop用户具有root权限

vim /etc/sudoers
在root    ALL=(ALL)       ALL 后面
添加 hadoop    ALL=(ALL)       NOPASSWD:ALL
保存时 wq! 强制保存
  1. 在/opt目录下创建两个文件夹module和software,并把所有权赋给用户 hadoop
mkdir /opt/module /opt/software

chown hadoop:hadoop /opt/module /opt/software
  1. 关机,快照,克隆
  2. 克隆的虚拟机改IP、虚拟机名
vim /etc/sysconfig/network-scripts/ifcfg-eth0
vim /etc/sysconfig/network
    改HOSTNAME=那一行,如果这里面没有,则
    
vim /etc/hostname 

以后的操作都用普通用户hadoop操作

  1. 搞一个分发脚本
cd ~
vim xsync

内容如下:

#!/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=102; host<105; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -av $pdir/$fname $user@hadoop$host:$pdir
done

赋权限:

 chmod +x xsync
    
 sudo cp xsync /bin
    
 sudo xsync /bin/xsync
  1. 配置免密登陆
        1. 生成密钥对
        ssh-keygen -t rsa 三次回车
        
        2. 将公钥拷贝到要免密登录的目标机器上
        [root@hadoop104 hadoop-2.7.2]# ssh-copy-id hadoop101
        [root@hadoop104 hadoop-2.7.2]# ssh-copy-id hadoop102
        [root@hadoop104 hadoop-2.7.2]# ssh-copy-id hadoop103
        [root@hadoop104 hadoop-2.7.2]# ssh-copy-id hadoop104
        
        3. 把/home/hadoop/.ssh 文件夹发送到集群所有服务器
        xsync /home/hadoop/.ssh

这样我们就可以先配置hadoop101这一个节点,然后通过分发来配置其他机器了。

  1. 在101机器上安装Java和Hadoop,并配置环境变量,并分发到集群其他机器
  • 1. 拷贝文件到/opt/software,两个tar包
  • 2. sudo tar -zxf h”+tab键” -C /opt/module
  • 3. sudo tar -zxf j”+tab键” -C /opt/module
  • 4. sudo vim /etc/profile
  • 在文件末尾添加
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • 保存
  • 5. source /etc/profile
  • 6. sudo xsync /etc/profile
  • sudo xsync /opt/module/j”+tab键”
  • sudo xsync /opt/module/h”+tab键”
  • 7. 在其他机器分别执行source /etc/profile

下面操作的所有配置文件都在$HADOOP_HOME/etc/hadoop 我的环境是:/opt/module/hadoop-2.7.2/etc/hadoop

集群规划

节点hadoop101hadoop102hadoop103hadoop104HDFSNameNode DataNodeDataNodeDataNodeSecondaryNameNode DataNodeYARNNodeManagerNodeManagerResourceManager NodeManagerNodeManager

  1. hadoop-env.sh,yarn-env.sh,mapred-env.sh 配置Java_HOME, 在每个文件第二行添加
export JAVA_HOME=/opt/module/jdk1.8.0_144
  1. 配置Core-site.xml
        <!-- 指定HDFS中NameNode的地址 -->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop101:9000</value>
        </property>

        <!-- 指定Hadoop运行时产生文件的存储目录 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/module/hadoop-2.7.2/data/tmp</value>
        </property>
  1. 配置hdfs-site.xml
        <!-- 数据的副本数量 -->
        <property>
            <name>dfs.replication</name>
            <value>3</value>
        </property>
        <!-- 指定Hadoop辅助名称节点主机配置 -->
        <property>
              <name>dfs.namenode.secondary.http-address</name>
              <value>hadoop104:50090</value>
        </property>

14.配置yarn-site.xml

        <!-- Site specific YARN configuration properties -->
        <!-- Reducer获取数据的方式 -->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>

        <!-- 指定YARN的ResourceManager的地址 -->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop103</value>
        </property>
        <!-- 日志聚集功能使能 -->
        <property>
            <name>yarn.log-aggregation-enable</name>
            <value>true</value>
        </property>

        <!-- 日志保留时间设置7天 -->
        <property>
            <name>yarn.log-aggregation.retain-seconds</name>
            <value>604800</value>
        </property>
  1. 配置mapred-site.xml
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- 历史服务器端地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop104:10020</value>
    </property>
    <!-- 历史服务器web端地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop104:19888</value>
    </property>

启动历史服务器:mr-jobhistory-daemon.sh start historyserver

  1. 配置slaves

/opt/module/hadoop-2.7.2/etc/hadoop/slaves

在该文件中增加如下内容:
hadoop101
hadoop102
hadoop103
hadoop104
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

17.分发配置文件

xsync /opt/module/hadoop-2.7.2/etc

18.格式化Namenode 在hadoop101

 hdfs namenode -format

19.启动hdfs – 在hadoop101上

start-dfs.sh

可以用 jps 查看启动结果

[root@hadoop101 hadoop-2.7.2]# jps
8258 Jps
8059 DataNode
7935 NameNode

[root@hadoop102 ~]# jps
2172 DataNode
2236 Jps

[root@hadoop103 ~]# jps
2393 Jps
2330 DataNode

[root@hadoop104 ~]# jps
2544 SecondaryNameNode
2454 DataNode
2585 Jps

web端查看HDFS文件系统 http://hadoop101:50070/dfshealth.html#tab-overview 注意:如果不能查看,看如下帖子处理 http://www.cnblogs.com/zlslch/p/6604189.html

  1. 在配置了Resourcemanager机器上执行 启动 YARN
在Hadoop103上启动  start-yarn.sh

注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN。

YARN的浏览器页面查看 http://hadoop103:8088/cluster

  1. Web端查看SecondaryNameNode 浏览器中输入:http://hadoop104:50090/status.html
  1. 集群基本测试
  • 上传文件到集群
[root@hadoop101 hadoop-2.7.2]# hdfs dfs -mkdir -p /user/haner/input

[root@hadoop101 hadoop-2.7.2]# hdfs dfs -put README.txt  /user/haner/input
  1. 集群启动/停止方式总结
  • 各个服务组件逐一启动/停止
    (1)分别启动/停止HDFS组件
		hadoop-daemon.sh  start / stop  namenode / datanode / secondarynamenode
	(2)启动/停止YARN
		yarn-daemon.sh  start / stop  resourcemanager / nodemanager
  • 各个模块分开启动/停止(配置ssh是前提)常用
    (1)整体启动/停止HDFS
		start-dfs.sh   /  stop-dfs.sh
	(2)整体启动/停止YARN
		start-yarn.sh  /  stop-yarn.sh
  1. 如果集群出了问题
    stop-dfs.sh
    stop-yarn.sh
    cd $HADOOP_HOME
    rm -rf data logs
    回到 18

集群时间同步

时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。这里用 hadoop101

1. 时间服务器配置(必须root用户)

  • ntp安装
yum -y install ntp
  • 修改ntp配置文件
vi /etc/ntp.conf

修改内容如下

a)修改1(授权192.168.174.0-192.1.174.255网段上的所有机器可以从这台机器上查询和同步时间)
#restrict 192.168.174.0 mask 255.255.255.0 nomodify notrap 改为
restrict 192.168.174.0 mask 255.255.255.0 nomodify notrap
b)修改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 改为
#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
c)添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
  • 修改/etc/sysconfig/ntpd 文件
vim /etc/sysconfig/ntpd

增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
  • 重新启动ntpd服务
service ntpd status

/bin/systemctl start ntpd.service
  • 设置ntpd服务开机启动
chkconfig ntpd on

2. 其他机器配置(必须root用户)

  • 在其他机器配置10分钟与时间服务器同步一次
crontab -e
编写定时任务如下:
*/10 * * * * /usr/sbin/ntpdate hadoop101
  • 修改为任意机器时间
date -s "2017-9-11 11:11:11"
  • 十分钟后查看机器是否与时间服务器同步
date

说明:测试的时候可以将10分钟调整为1分钟,节省时间。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/5479.html

(0)
上一篇 2022-12-13 23:26
下一篇 2022-12-13 23:26

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信