Hadoop从零开始搭建集群(自己总结)

内存4G,硬盘50G

 

1. 安装好linux

    /boot 200M

    /swap 2g

    / 剩余

   

2. *安装VMTools(选装)

3. 关闭防火墙(★★★)

    sudo service iptables stop

    sudo chkconfig iptables off

4. 设置静态IP,改主机名

    编辑vim /etc/sysconfig/network-scripts/ifcfg-eth0

    改成

=================================

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=static

NAME="eth0"

IPADDR=192.168.8.101

PREFIX=24

GATEWAY=192.168.8.2

DNS1=192.168.8.2

=================================

    编辑vim /etc/sysconfig/network

    改HOSTNAME=那一行

   

5. 配置/etc/hosts

    vim /etc/hosts

=============================

192.168.8.100   hadoop100

192.168.8.101   hadoop101

192.168.8.102   hadoop102

192.168.8.103   hadoop103

192.168.8.104   hadoop104

192.168.8.105   hadoop105

192.168.8.106   hadoop106

192.168.8.107   hadoop107

192.168.8.108   hadoop108

192.168.8.109   hadoop109

=============================

 

6. 创建一个一般用户atguigu,给他配置密码

    useradd atguigu

    passwd atguigu

   

7. 配置这个用户为sudoers

    visudo

    在root    ALL=(ALL)       ALL

    添加atguigu    ALL=(ALL)       NOPASSWD:ALL

    保存时wq!强制保存

    

8. *在/opt目录下创建两个文件夹module和software,并把所有权赋给atguigu

    mkdir /opt/module /opt/software

    chown atguigu:atguigu /opt/module /opt/software

   

9. 关机,快照,克隆

 

从这里开始要以一般用户登陆

 

10. 克隆的虚拟机改IP

修改主机名

vim /etc/sysconfig/network

删除eth0,把eth1改为eth0,复制ATTR{address}里面的地址到HWADDR

vim /etc/udev/rules.d/70-persistent-net.rules

修改IP和HWADDR

reboot

 

11.JDK和Hadoop的安装

在一台机器上安装Java和Hadoop,并配置环境变量,并分发到集群其他机器

1. 拷贝文件到/opt/software,两个tar包

tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/

tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/

2.配置环境变量

cd /etc/profile.d

sudo vim jdk.sh

添加内容:

#JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_144

export PATH=$PATH:$JAVA_HOME/bin

 

sudo vim hadoop.sh

添加内容:

#HADOOP_HOME

export HADOOP_HOME=/opt/module/hadoop-2.7.2

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

新开一个窗口使配置的环境生效

 

12. 搞一个分发脚本

    cd ~

    vim xsync

    内容如下:

=================================================================

#!/bin/bash

#1. 判断参数个数

if [ $# -lt 1 ]

then

    echo Not Enough Arguement!

    exit;

fi

#2. 遍历集群所有机器

for host in hadoop102 hadoop103 hadoop104

do

    echo ====================    $host    ====================

    #3. 遍历所有目录,挨个发送

    for file in $@

    do

        #4 判断文件是否存在

        if [ -e $file ]

        then

            #5. 获取父目录

            pdir=$(cd -P $(dirname $file); pwd)

           

            #6. 获取当前文件的名称

            fname=$(basename $file)

           

            ssh $host "mkdir -p $pdir"

            rsync -av $pdir/$fname $USER@$host:$pdir

           

        else

            echo $file does not exists!

        fi

    done

done

==============================================================

   

    chmod +x xsync

   

    sudo cp xsync /bin(sudo mv xsync /bin)

   

    sudo xsync /bin/xsync

 

 

 

13.配置免密登陆

(1)安全方法:

 

       1. 生成密钥对

        ssh-keygen -t rsa 三次回车

       

        2. 发送公钥到本机

        ssh-copy-id hadoop102 输入一次密码

 

        三台机器需要互相copy,自己和自己也需要copy,共9次

 

(2)快捷方法(不安全):

        1. 生成密钥对

        ssh-keygen -t rsa 三次回车

       

        2. 发送公钥到本机

        ssh-copy-id hadoop102 输入一次密码

       

        3. 分别ssh登陆一下所有虚拟机

        ssh hadoop103

        exit

        ssh hadoop104

        exit

       

        4. 把/home/atguigu/.ssh 文件夹发送到集群所有服务器

        xsync /home/atguigu/.ssh

 

 

14.集群部署Hadoop和JDK

cd /opt/module/

拷贝jdk和hadoop

xsync hadoop-2.7.2 jdk1.8.0_144 jdk1.8.0_144

配置环境变量

sudo xsync /etc/profile.d(因为root用户没有配置免密登录,所以需要输入密码)

部署完重新开一个各自的窗口使配置生效

新开窗口输入java -version和hadoop version检验是否成功

 

打开Notepad++,用NppFTP连接hadoop102,在/opt/module/Hadoop-2.7.2/etc/hadoop目录下修改下列配置文件

15. 配置Core-site.xml

==============================================================

       

       

            fs.defaultFS

            hdfs://hadoop102:9000

       

 

       

       

            hadoop.tmp.dir

            /opt/module/hadoop-2.7.2/data/tmp

       

==============================================================

 

16. 配置hdfs-site.xml

==============================================================

       

       

            dfs.replication

            3

       

       

       

              dfs.namenode.secondary.http-address

              hadoop104:50090

       

==============================================================

 

17. 配置yarn-site.xml

==============================================================

       

       

       

                yarn.nodemanager.aux-services

                mapreduce_shuffle

       

 

       

       

            yarn.resourcemanager.hostname

            hadoop103

       

       

       

            yarn.log-aggregation-enable

            true

       

 

       

       

            yarn.log-aggregation.retain-seconds

            604800

       

==============================================================

 

18. 配置mapred-site.xml

==============================================================

   

        mapreduce.framework.name

        yarn

   

   

   

        mapreduce.jobhistory.address

        hadoop104:10020

   

   

   

        mapreduce.jobhistory.webapp.address

        hadoop104:19888

   

   

 

==============================================================

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

19. 配置Slaves

==============================================================

hadoop102

hadoop103

hadoop104

==============================================================

 

20. 分发配置文件

    xsync /opt/module/hadoop-2.7.2/etc

21. 格式化Namenode 在hadoop102

    hdfs namenode -format

 

22. 启动hdfs

    start-dfs.sh

 

23. 在配置了Resourcemanager机器上执行

    在Hadoop103上启动start-yarn.sh

 

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

 

 

浏览器访问:

hadoop102:50070这个是namenode

hadoop104:50090这个是secondarynamenode

若是都可以ping通但是浏览器无法打开,需要进入虚拟机,把每一个机器的防火墙重启在关闭

service iptables restart

service iptables stop

之后重新用浏览器访问,即可成功

 

 

 

24.官方案例测试是否搭建成功

    mkdir input

    vim input/input

abc

def efg

asd

        

    hadoop fs -put input /

    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /input /output

   

25. 关 stop-dfs.sh stop-yarn.sh

 

26. hadoop-daemon.sh start namenode或datanode

   yarn-daemon.sh start resourcemanager或nodemanager

  

如果集群出了问题

    stop-dfs.sh

    stop-yarn.sh

    #三台机器都要执行

    cd $HADOOP_HOME

    rm -rf data logs

    回到21

 

★添加jpsall脚本

[atguigu@hadoop102 ~]$ vim jpsall

添加如下内容:

#!/bin/bash

for i in hadoop102 hadoop103 hadoop104

do

       echo ====================    $i    ========================

       ssh $i "jps $@" | grep -v Jps

done

[atguigu@hadoop102 ~]$ chmod +x jpsall

[atguigu@hadoop102 ~]$ sudo mv jpsall /bin

[atguigu@hadoop102 ~]$ jpsall

 

 

 

 

27. 配置时间同步(必须root用户)

1.(1)检查ntp是否安装

[root@hadoop102 桌面]# rpm -qa|grep ntp

结果:

ntp-4.2.6p5-10.el6.centos.x86_64

fontpackages-filesystem-1.41-1.1.el6.noarch

ntpdate-4.2.6p5-10.el6.centos.x86_64

(2)查看ntp服务

每一个机器输入:

sudo service ntpd status

结果:

ntpd 已停

(已停为正常状态,若显示正在运行需要先停止服务sudo service ntpd stop,

暂时关闭ntp的自动启动:sudo chkconfig ntpd off)

 

(3)切换成root用户

su -

提示输入密码

 

(4)修改ntp配置文件

[root@hadoop102 桌面]# vi /etc/ntp.conf

修改内容如下:

a)修改1(授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间)

#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap为

restrict 192.168.8.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(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)

将下面两句复制粘贴到ntp.conf下

server 127.127.1.0

fudge 127.127.1.0 stratum 10

(3)修改/etc/sysconfig/ntpd 文件

[root@hadoop102 桌面]# vim /etc/sysconfig/ntpd

增加内容如下(让硬件时间与系统时间一起同步)

SYNC_HWCLOCK=yes

(4)重新启动ntpd服务

[root@hadoop102 桌面]# service ntpd status

ntpd 已停

[root@hadoop102 桌面]# service ntpd start

正在启动 ntpd:                                            [确定]

(5)设置ntpd服务开机启动

[root@hadoop102 桌面]# chkconfig ntpd on

 

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

(1)在其他机器配置10分钟与时间服务器同步一次

[root@hadoop103桌面]# crontab -e

编写定时任务如下:

*/10 * * * * /usr/sbin/ntpdate hadoop102

(2)修改任意机器时间

[root@hadoop103桌面]# date -s "2017-9-11 11:11:11"

(3)十分钟后查看机器是否与时间服务器同步

[root@hadoop103桌面]# date

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

 

你可能感兴趣的:(Hadoop)