Hadoop之搭建完全分布式运行模式

一、过程分析

  1、准备3台客户机(关闭防火墙、修改静态ip、主机名称)

  2、安装JDK

  3、配置环境变量

  4、安装Hadoop

  5、配置集群

  6、单点启动

  7、配置ssh免密登录

  8、群起并测试集群

二、编写集群分发脚本 xsync

1、scp(secure copy)安全拷贝

  1)scp定义

    scp可以实现服务器与服务器之间的数据拷贝。

  2)基本语法

    scp -r 文件  用户名@主机:目标路径/名称

  3)案例

    a、在hadoop101上,将hadoop101中 /opt/module 目录下的软件拷贝到 hadoop102上。

[[email protected]101 /]$ scp -r /opt/module  [email protected]:/opt/module

    b、在hadoop103上,将hadoop101服务器上的/opt/module 目录下的软件拷贝到 hadoop103上。

[[email protected]103 opt]$sudo scp -r [email protected]:/opt/module [email protected]:/opt/module

    c、在hadoop103上操作hadoop101 中/opt/module 目录下的软件 拷贝到 hadoop104上。

[[email protected] opt]$ scp -r [email protected]:/opt/module [email protected]:/opt/module

   注意:拷贝过来的/opt/module目录,别忘了在hadoop102、hadoop103、hadoop104上修改所有文件的所有者和所有者组。

      sudo chown hadoop:hadoop -R /opt/module

    d、分别将hadoop101 中/etc/profile 文件拷贝到hadoop102、103、104、的/etc/profile上。

[[email protected] ~]$ sudo scp /etc/profile [email protected]:/etc/profile
[[email protected] ~]$ sudo scp /etc/profile [email protected]:/etc/profile
[[email protected] ~]$ sudo scp /etc/profile [email protected]:/etc/profile

    注意:拷贝完成后,需要source一下

2、rsync 远程同步工具

  rsync主要用于备份和镜像,具有速度快、避免复制相同内容和支持符号链接的优点。

  rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp是把所有文件都复制过去。

  1)语法

    rsync  -rvl  要拷贝的文件路径/名称   目的用户@主机:目的路径/名称

   选项参数说明:

  

选项 功能
-r 递归
-v 显示复制过程
-l 拷贝符号连接

  2)案例

    a、把hadoop101 机器上的 /opt/software 目录同步到 hadoop102 服务器的 root用户下的 /opt目录

[[email protected] opt]$ rsync -rvl /opt/software/ [email protected]:/opt/software

3、xsync集群分发脚本

  1)需求:循环复制文件到所有节点的相同目录下

  2)分析

    a、rsync命令原始拷贝:

      rsync -rvl /opt/module [email protected]:/opt/

    b、期望脚本:

      xsync 要同步的文件名称

    c、说明:在/home/hadoop/bin 这个目录下存放的脚本,hadoop用户可以在系统任何地方直接执行。

  3)脚本实现
    a、在/home/hadoop 目录下创建bin 目录,并在 bin目录下创建xsync文件,文件内容如下:

[[email protected] ~]$ mkdir bin
[[email protected] ~]$ cd bin/
[[email protected] bin]$ touch xsync
[[email protected] bin]$ vi 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=103; host<105; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -rvl $pdir/$fname [email protected]$host:$pdir
done

    b、修改脚本 xsync 具有执行权限   

[[email protected] bin]$ chmod 777 xsync

    c、调用脚本形式:xsync 文件名称

[[email protected] bin]$ xsync /home/hadoop/bin

    注意:如果将xsync 放到/home/hadoop/bin 目录下仍然不能实现全局使用,可以将xsync 移动到/usr/local/bin 目录下。

三、集群配置

1、集群部署规划

  hadoop102 hadoop103 hadoop104
HDFS
NameNode

DataNode

DataNode
SecondaryNameNode

DataNode


YARN

NodeManager
ResourceManager

NodeManager

NodeManager

2、配置集群

  1)核心配置文件

  配置core-site.xml

[[email protected] hadoop]$ vi core-site.xml 

  在该文件中编写如下配置:

<!-- 指定HDFS中NameNode的地址 -->
<property>
        <name>fs.defaultFS</name>
      <value>hdfs://hadoop102:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>

  2)HDFS 配置文件

  配置 hadoop-env.sh

[[email protected] hadoop]$ vi hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144

  配置 hdfs-site.xml

[[email protected] hadoop]$ vi 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> 

  3)YARN 配置文件

  配置 yarn-env.sh

[[email protected] hadoop]$ vi yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144

  配置 yarn-site.xml

[[email protected] hadoop]$ vi yarn-site.xml

  在该文件中增加如下配置:

<!-- 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>

  4)MapReduce 配置文件

  配置 mapred-env.sh  

[[email protected] hadoop]$ vi mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144

  配置 mapred-site.xml

[[email protected] hadoop]$ cp mapred-site.xml.template mapred-site.xml

[[email protected] hadoop]$ vi mapred-site.xml

  在该文件中增加如下配置

<!-- 指定MR运行在Yarn上 -->
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>

3、在集群上分发配置好的 Hadoop 配置文件

[[email protected] hadoop]$ xsync /opt/module/hadoop-2.7.2/

4、查看文件分发情况

[[email protected] hadoop]$ cat /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml

四、集群单点启动

1、如果集群是第一次启动,需要格式化 NameNode

[[email protected] hadoop-2.7.2]$ hadoop namenode -format

2、在 hadoop102 上启动 NameNode

[[email protected] hadoop-2.7.2]$ hadoop-daemon.sh start namenode
[[email protected] hadoop-2.7.2]$ jps
3461 NameNode

3、在 hadoop102、hadoop103 以及 hadoop 104上分别启动 DataNode

[[email protected] hadoop-2.7.2]$ hadoop-daemon.sh start datanode
[[email protected] hadoop-2.7.2]$ jps
3461 NameNode
3608 Jps
3561 DataNode
[[email protected] hadoop-2.7.2]$ hadoop-daemon.sh start datanode
[[email protected] hadoop-2.7.2]$ jps
3190 DataNode
3279 Jps
[[email protected] hadoop-2.7.2]$ hadoop-daemon.sh start datanode
[[email protected] hadoop-2.7.2]$ jps
3237 Jps
3163 DataNode

4、思考:每次都一个一个节点启动,如果节点数目增加到1000个 怎么办?

五、SSH 无密登录配置

1、无密钥配置

  1)免登录原理

  2)生成公钥和私钥

[[email protected] .ssh]$ ssh-keygen -t rsa

  然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)

  3)将公钥拷贝到要免密登录的目标机器上  

[[email protected] .ssh]$ ssh-copy-id hadoop102
[[email protected] .ssh]$ ssh-copy-id hadoop103
[[email protected] .ssh]$ ssh-copy-id hadoop104

  注意:还需要在hadoop102 上采用 root账号,配置一下无密登录到 hadoop102、hadoop103、hadoop104。

       还需要在hadoop103 上采用 hadoop账号,配置一下无密登录到hadoop102、hadoop103、hadoop104 服务器上。

2、.ssh 文件夹下(~/.ssh)的文件功能解释

known_hosts 记录ssh访问过计算机的公钥(public key)
id_rsa 生成的私钥
id_rsa.pub 生成的公钥
authorized_keys 存放授权过的无密登录服务器公钥

 六、群起集群

1、配置 slaves

/opt/module/hadoop-2.7.2/etc/hadoop/slaves
[[email protected] hadoop]$ vi slaves

在该文件中增加如下内容:

hadoop102
hadoop103
hadoop104

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

 2、启动集群

  1)如果集群是第一次启动,需要格式化 NameNode(注意格式化之前,一定要先停止上次启动的所有 namenode 和 datanode 进程,然后再删除 data 和 log 数据)

[[email protected] hadoop-2.7.2]$ bin/hdfs namenode -format

  2)启动 HDFS

[[email protected] hadoop-2.7.2]$ sbin/start-dfs.sh
[[email protected] hadoop-2.7.2]$ jps
4166 NameNode
4482 Jps
4263 DataNode
[[email protected] hadoop-2.7.2]$ jps
3218 DataNode
3288 Jps

[[email protected] hadoop-2.7.2]$ jps
3221 DataNode
3283 SecondaryNameNode
3364 Jps

  3)启动 YARN

[[email protected] hadoop-2.7.2]$ sbin/start-yarn.sh

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

  4)web 端查看 SecondaryNameNode

    a、浏览器输入:

    b、查看SecondaryNameNode,如图

3、集群基本测试

  1)上传文件到集群

  上传小文件  

[[email protected] hadoop-2.7.2]$ hdfs dfs -mkdir -p /user/atguigu/input
[[email protected] hadoop-2.7.2]$ hdfs dfs -put wcinput/wc.input /user/atguigu/input

  上传大文件

[[email protected] hadoop-2.7.2]$ bin/hadoop fs -put
 /opt/software/hadoop-2.7.2.tar.gz  /user/atguigu/input

  2)上传文件后查看文件存放在什么位置

    a、查看HDFS文件存储路径

[[email protected] subdir0]$ pwd

/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current/BP-938951106-192.168.10.107-1495462844069/current/finalized/subdir0/subdir0

    b、查看HDFS在磁盘存储文件内容

[[email protected] subdir0]$ cat blk_1073741825
hadoop yarn
hadoop mapreduce
jiangchun
jiangchun

  3)拼接

-rw-rw-r--. 1 hadoop hadoop 134217728 5月  23 16:01 blk_1073741836
-rw-rw-r--. 1 hadoop hadoop   1048583 5月  23 16:01 blk_1073741836_1012.meta
-rw-rw-r--. 1 hadoop hadoop  63439959 5月  23 16:01 blk_1073741837
-rw-rw-r--. 1 hadoop hadoop    495635 5月  23 16:01 blk_1073741837_1013.meta

[[email protected] subdir0]$ cat blk_1073741836>>tmp.file
[[email protected] subdir0]$ cat blk_1073741837>>tmp.file
[[email protected] subdir0]$ tar -zxvf tmp.file

  4)下载

[[email protected] hadoop-2.7.2]$ bin/hadoop fs -get /user/atguigu/input/hadoop-2.7.2.tar.gz ./

七、集群启动/停止方式总结

1、各个服务组件逐一启动/停止

  1)分别启动/停止 HDFS 组件  

hadoop-daemon.sh  start / stop  namenode / datanode / secondarynamenode

  2)启动/停止 YARN

yarn-daemon.sh  start / stop  resourcemanager / nodemanager

2、各个模块分开启动/停止 (前提是配置ssh)

  1)整体启动/停止 HDFS

start-dfs.sh   /  stop-dfs.sh

  2)整体启动/停止 YARN

start-yarn.sh  /  stop-yarn.sh

 八、集群时间同步

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

  

  具体步骤:

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

  1)检查 ntp 是否安装

[[email protected] 桌面]# 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 配置文件

[[email protected]2 桌面]# 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.1.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

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

[[email protected] 桌面]# vim /etc/sysconfig/ntpd

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

SYNC_HWCLOCK=yes

  4)重启 ntpd 服务

[[email protected] 桌面]# service ntpd status
ntpd 已停
[[email protected] 桌面]# service ntpd start
正在启动 ntpd:                                            [确定]

  5)设置 ntpd 服务开机启动

[[email protected] 桌面]# chkconfig ntpd on

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

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

[[email protected]桌面]# crontab -e

  编写定时任务如下:

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

  2)修改任意机器时间

[[email protected]桌面]# date -s "2017-9-11 11:11:11"

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

[[email protected]桌面]# date

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

原文地址:https://www.cnblogs.com/jiang-chun/p/9906553.html

时间: 2024-11-11 18:42:30

Hadoop之搭建完全分布式运行模式的相关文章

大数据技术之_03_Hadoop学习_02_入门_Hadoop运行模式+【本地运行模式+伪分布式运行模式+完全分布式运行模式(开发重点)】+Hadoop编译源码(面试重点)+常见错误及解决方案

第4章 Hadoop运行模式4.1 本地运行模式4.1.1 官方Grep案例4.1.2 官方WordCount案例4.2 伪分布式运行模式4.2.1 启动HDFS并运行MapReduce程序4.2.2 启动YARN并运行MapReduce程序4.2.3 配置历史服务器4.2.4 配置日志的聚集4.2.5 配置文件说明4.3 完全分布式运行模式(开发重点)4.3.1 虚拟机准备4.3.2 编写集群分发脚本xsync4.3.3 集群配置4.3.4 集群单点启动4.3.5 SSH无密登录配置4.3.6

hadoop环境搭建之关于NAT模式静态IP的设置 ---VMware12+CentOs7

很久没有更新了,主要是没有时间,今天挤出时间验证了一下,果然还是有些问题的,不过已经解决了,就发上来吧. PS:小豆腐看仔细了哦~ 关于hadoop环境搭建,从单机模式,到伪分布式,再到完全分布式,我们这里就讨论完全分布式,关于搭建工具,有hadoop+CentOs+VMware,感觉各个版本还是有一点差异的. 随后可能会整理出一个常用版本,今天先说说VM的静态IP的设置吧: 关于VM,大家可能不陌生,目前也是windows系统搭建模拟hadoop环境的必要软件之一. 但是,由于有些人会经常改变

完全分布式模式的Hadoop环境搭建

一.本文说明:本次测试在五台虚拟机系统上进行完全分布式搭建.Hadoop分布式模式是在多台机器上分布式部署,配置非常类似于伪分布式,名称节点和数据节点都分布在不同的主机上,每台数据节点上都有相应的任务调度. 二.环境说明:       虚拟软件:VM10.0       操作系统:Cent Os 6.7       hadoop版本:hadoop-2.7.2       JDK版本:jdk1.8_77备注:基于独立模式基础上搭建,参考文章:独立模式的Hadoop环境搭建. 三.基本环境配置   

伪分布式模式的Hadoop环境搭建

一.本文说明:     本次测试在一台虚拟机系统上进行伪分布式搭建.Hadoop伪分布式模式是在单机上模拟Hadoop分布式,单机上的分布式并不是真正的伪分布式,而是使 用线程模拟分布式.Hadoop本身是无法区分伪分布式和分布式的,两种配置也很相似.唯一不同的地方是伪分布式是在单机器上配置,数据节点和名字节点均 是一个机器. 二.环境说明:      操作系统:Cent Os 6.7      hadoop版本:hadoop-2.7.2      JDK版本:jdk1.8_77     备注:

独立模式的Hadoop环境搭建

对于Hadoop来说,最主要的是两个方面,一个是分布式文件系统HDFS,另一个是MapReduce计算模型,搭建Hadoop的运行环境主要分为三种:独立模式环境.伪分布式环境.完全分布式环境.    一.独立模式:也叫单机模式.这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统,没有守护进程,所有程序都运行在同一个JVM中,利于调试和测试,主要用于开发环境.    二.伪分布式:hadoop运行在单机上,但是模拟了一个小的集群,运行在不同的JVM中,用不同的Java

Hadoop运行模式:本地模式、伪分布模式、完全分布模式

1.本地模式:默认模式 - 不对配置文件进行修改. - 使用本地文件系统,而不是分布式文件系统. - Hadoop不会启动NameNode.DataNode.ResourceManager.NodeManager等守护进程,Map()和Reduce()任务作为同一个进程的不同部分来执行的. - 用于对MapReduce程序的逻辑进行调试,确保程序的正确. 2.伪分布模式:等同于完全分布式,只有一个节点 - 分为在HDFS上执行和在YARN上执行 - Hadoop启动NameNode.DataNo

Hadoop单机、伪分布式、分布式集群搭建

JDK安装 设置hostname [[email protected] ~]# vi /etc/hostname 设置机器hosts [[email protected] ~]# vi /etc/hosts 192.168.1.111 bigdata111 192.168.1.112 bigdata112 192.168.1.113 bigdata113 创建jdk目录 [[email protected] /]# cd /opt [[email protected] opt]# ll 总用量

基于Hadoop的数据分析综合管理平台之Hadoop、HBase完全分布式集群搭建

能够将热爱的技术应用于实际生活生产中,是做技术人员向往和乐之不疲的事. 现将前期手里面的一个项目做一个大致的总结,与大家一起分享.交流.进步.项目现在正在线上运行,项目名--基于Hadoop的数据分析综合管理平台. 项目流程整体比较清晰,爬取数据(txt文本)-->数据清洗-->文本模型训练-->文本分类-->热点话题发现-->报表"实时"展示,使用到的技术也是当今互联网公司常用的技术:Hadoop.Mahout.HBase.Spring Data Had

Hadoop学习笔记(3)——分布式环境搭建

Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里,我们采用这样的策略来模拟环境,我们使用3台ubuntu机器,1台为作主机(master),另外2台作为从机(slaver).同时,这台主机,我们就用第一章中搭建好的环境来. 我们采用与第一章中相似的步骤来操作: 运行环境搭建 在前面,我们知道,运行hadoop是在linux上运行的.所以我们单机就在