Hadoop运行模式(多台)

网友投稿 249 2022-11-18

Hadoop运行模式(多台)

运行模式

文章目录

​​运行模式​​

​​3 完全分布式运行模式​​

​​3.1 分析:​​​​3.2 编写集群分发脚本xsync​​

​​1. scp(secure copy)安全拷贝​​​​2. rsync 远程同步工具​​​​3. xsync集群分发脚本​​

​​3.3 集群配置​​

​​1. 集群部署规划​​​​2. 配置集群​​​​3.在集群上分发配置好的Hadoop配置文件​​​​4.查看文件分发情况​​

​​3.4 集群单点启动​​​​3.5 SSH无密登录配置​​

​​1. 配置ssh​​​​2. 无密钥配置​​​​3. .ssh文件夹下(~/.ssh)的文件功能解释​​

​​3.6 群起集群​​

​​1. 配置slaves​​​​2. 启动集群​​

​​3. 集群基本测试​​​​3.7 集群启动/停止方式总结​​​​3.8 集群时间同步​​

3 完全分布式运行模式

3.1 分析:

1)准备3台客户机(关闭防火墙、静态ip、主机名称)2)安装JDK3)配置环境变量4)安装Hadoop5)配置环境变量6)配置集群7)单点启动8)配置ssh9)群起并测试集群

3.2 编写集群分发脚本xsync

1. scp(secure copy)安全拷贝

(1)scp定义:

scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)

(3)案例实操 (a)在hadoop101上,将hadoop101中/opt/module目录下的软件拷贝到hadoop102上。

[atguigu@hadoop101 /]$ scp -r /opt/module root@hadoop102:/opt/module

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

[atguigu@hadoop103 opt]$sudo scp -r atguigu@hadoop101:/opt/module root@hadoop103:/opt/module

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

[atguigu@hadoop103 opt]$ scp -r atguigu@hadoop101:/opt/module root@hadoop104:/opt/module

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

(d)将hadoop101中/etc/profile文件拷贝到hadoop102的/etc/profile上。

[atguigu@hadoop101 ~]$ sudo scp /etc/profile root@hadoop102:/etc/profile

(e)将hadoop101中/etc/profile文件拷贝到hadoop103的/etc/profile上。

[atguigu@hadoop101 ~]$ sudo scp /etc/profile root@hadoop103:/etc/profile

(f)将hadoop101中/etc/profile文件拷贝到hadoop104的/etc/profile上。

[atguigu@hadoop101 ~]$ sudo scp /etc/profile root@hadoop104:/etc/profile

注意:拷贝过来的配置文件别忘了source一下/etc/profile,。

2. rsync 远程同步工具

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

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

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

[atguigu@hadoop101 opt]$ rsync -rvl /opt/software/ root@hadoop102:/opt/software

3. xsync集群分发脚本

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

(2)需求分析:

(a)rsync命令原始拷贝: rsync -rvl /opt/module root@hadoop103:/opt/ (b)期望脚本: xsync要同步的文件名称 (c)说明:在/home/atguigu/bin这个目录下存放的脚本,atguigu用户可以在系统任何地方直接执行。

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

[atguigu@hadoop102 ~]$ mkdir bin[atguigu@hadoop102 ~]$ cd bin/[atguigu@hadoop102 bin]$ touch xsync[atguigu@hadoop102 bin]$ vi xsync

在该文件中编写如下代码

#!/bin/bash#1 获取输入参数个数,如果没有参数,直接退出pcount=$#if((pcount==0)); thenecho no args;exit;fi#2 获取文件名称p1=$1fname=`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 $user@hadoop$host:$pdirdone

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

[atguigu@hadoop102 bin]$ chmod 777 xsync

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

[atguigu@hadoop102 bin]$ xsync /home/atguigu/bin

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

3.3 集群配置

1. 集群部署规划

2. 配置集群

(1)核心配置文件 配置core-site.xml

[atguigu@hadoop102 hadoop]$ vi core-site.xml

在该文件中编写如下配置

fs.defaultFS hdfs://hadoop102:9000 hadoop.tmp.dir /opt/module/hadoop-2.7.2/data/tmp

(2)HDFS配置文件 配置hadoop-env.sh

[atguigu@hadoop102 hadoop]$ vi hadoop-env.shexport JAVA_HOME=/opt/module/jdk1.8.0_144

配置hdfs-site.xml

[atguigu@hadoop102 hadoop]$ vi hdfs-site.xml

在该文件中编写如下配置

dfs.replication 3 dfs.namenode.secondary. hadoop104:50090

(3)YARN配置文件 配置yarn-env.sh

[atguigu@hadoop102 hadoop]$ vi yarn-env.shexport JAVA_HOME=/opt/module/jdk1.8.0_144

配置yarn-site.xml

[atguigu@hadoop102 hadoop]$ vi yarn-site.xml

在该文件中增加如下配置

yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname hadoop103

(4)MapReduce配置文件 配置mapred-env.sh

[atguigu@hadoop102 hadoop]$ vi mapred-env.shexport JAVA_HOME=/opt/module/jdk1.8.0_144

配置mapred-site.xml

[atguigu@hadoop102 hadoop]$ cp mapred-site.xml.template mapred-site.xml[atguigu@hadoop102 hadoop]$ vi mapred-site.xml

在该文件中增加如下配置

mapreduce.framework.name yarn

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

[atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-2.7.2/

4.查看文件分发情况

[atguigu@hadoop103 hadoop]$ cat /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml

3.4 集群单点启动

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

[atguigu@hadoop102 hadoop-2.7.2]$ hadoop namenode -format

(2)在hadoop102上启动NameNode

[atguigu@hadoop102 hadoop-2.7.2]$ hadoop-daemon.sh start namenode[atguigu@hadoop102 hadoop-2.7.2]$ jps3461 NameNode

(3)在hadoop102、hadoop103以及hadoop104上分别启动DataNode

[atguigu@hadoop102 hadoop-2.7.2]$ hadoop-daemon.sh start datanode[atguigu@hadoop102 hadoop-2.7.2]$ jps3461 NameNode3608 Jps3561 DataNode[atguigu@hadoop103 hadoop-2.7.2]$ hadoop-daemon.sh start datanode[atguigu@hadoop103 hadoop-2.7.2]$ jps3190 DataNode3279 Jps[atguigu@hadoop104 hadoop-2.7.2]$ hadoop-daemon.sh start datanode[atguigu@hadoop104 hadoop-2.7.2]$ jps3237 Jps3163 DataNode

3.5 SSH无密登录配置

1. 配置ssh

(1)基本语法 ssh另一台电脑的ip地址 (2)ssh连接时出现Host key verification failed的解决方法

[atguigu@hadoop102 opt] $ ssh 192.168.1.103The authenticity of host '192.168.1.103 (192.168.1.103)' can't be established.RSA key fingerprint is cf:1e:de:d7:d0:4c:2d:98:60:b4:fd:ae:b1:2d:ad:06.Are you sure you want to continue connecting (yes/no)? Host key verification failed.

(3)解决方案如下:直接输入yes

2. 无密钥配置

(1)免密登录原理,如图2-40所示

(2)生成公钥和私钥:

[atguigu@hadoop102 .ssh]$ ssh-keygen -t rsa

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

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

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop102[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop103[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop104

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

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

3.6 群起集群

1. 配置slaves

/opt/module/hadoop-2.7.2/etc/hadoop/slaves[atguigu@hadoop102 hadoop]$ vi slaveshadoop102hadoop103hadoop104

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。 同步所有节点配置文件

[atguigu@hadoop102 hadoop]$ xsync slaves

2. 启动集群

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

[atguigu@hadoop102 hadoop-2.7.2]$ bin/hdfs namenode -format

(2)启动HDFS

[atguigu@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh[atguigu@hadoop102 hadoop-2.7.2]$ jps4166 NameNode4482 Jps4263 DataNode[atguigu@hadoop103 hadoop-2.7.2]$ jps3218 DataNode3288 Jps[atguigu@hadoop104 hadoop-2.7.2]$ jps3221 DataNode3283 SecondaryNameNode3364 Jps

(3)启动YARN

[atguigu@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh

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

(4)Web端查看SecondaryNameNode

3. 集群基本测试

(1)上传文件到集群 上传小文件

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

上传大文件

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

(2)上传文件后查看文件存放在什么位置 (a)查看HDFS文件存储路径

[atguigu@hadoop102 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在磁盘存储文件内容

[atguigu@hadoop102 subdir0]$ cat blk_1073741825hadoop yarnhadoop mapreduce atguiguatguigu

(3)拼接

-rw-rw-r--. 1 atguigu atguigu 134217728 5月 23 16:01 blk_1073741836-rw-rw-r--. 1 atguigu atguigu 1048583 5月 23 16:01 blk_1073741836_1012.meta-rw-rw-r--. 1 atguigu atguigu 63439959 5月 23 16:01 blk_1073741837-rw-rw-r--. 1 atguigu atguigu 495635 5月 23 16:01 blk_1073741837_1013.meta[atguigu@hadoop102 subdir0]$ cat blk_1073741836>>tmp.file[atguigu@hadoop102 subdir0]$ cat blk_1073741837>>tmp.file[atguigu@hadoop102 subdir0]$ tar -zxvf tmp.file

(4)下载

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

3.7 集群启动/停止方式总结

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

3.8 集群时间同步

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

配置时间同步具体实操:1. 时间服务器配置(必须root用户)

(1)检查ntp是否安装

[root@hadoop102 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64

(2)修改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.1.0 mask 255.255.255.0 nomodify notrap

b)修改2(集群在局域网中,不使用其他互联网上的时间)

server 0.centos.pool.ntp.org iburstserver 1.centos.pool.ntp.org iburstserver 2.centos.pool.ntp.org iburstserver 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.0fudge 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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:泰迪熊移动叶松:5G消息是传统短信的全面升级
下一篇:java Springboot实现教务管理系统
相关文章

 发表评论

暂时没有评论,来抢沙发吧~