(四) Hadoop运行模式--完全分布式

一. 分析

  1. 准备3台客户机(全部都要关闭防火墙,设置静态IP,设置主机名称)
  2. 安装jdk
  3. 配置环境变量
  4. 安装hadoop
  5. 配置环境变量
  6. 安装ssh
  7. 配置集群
  8. 启动测试集群

1, 2, 3,4步骤不再重复,详情请参考之前的博客

(一) scp

  1. scp可以实现服务器与服务器之间的数据拷贝
  2. 案例实操
    (1). 将hadoop101中的/opt/module和/opt/spftware文件拷贝到hadoop102, hadoop103和hadoop104上去。
[root@hadoop101 /]# scp -r /opt/module root@hadoop102:/opt
[root@hadoop101 /]# scp -r /opt/module root@hadoop102:/opt
[root@hadoop101 /]# scp -r /opt/module root@hadoop103:/opt
[root@hadoop101 /]# scp -r /opt/module root@hadoop103:/opt
[root@hadoop101 /]# scp -r /opt/module root@hadoop104:/opt
[root@hadoop101 /]# scp -r /opt/module root@hadoop104:/opt

(2)将hadoop102服务器上的文件拷贝到当前用户下

[root@hadoop101 opt]# scp root@hadoop102:/etc/profile /opt/tmp

(3)实现两台远程机器之间的文件传输(hadoop103主机文件拷贝到hadoop104主机上

[starfish@hadoop102 test]$ scp starfish@hadoop103:/opt/test/haha starfish@hadoop104:/opt/test

SSH无密码登录

(1)配置ssh
a. 进入到我的home目录的.ssh目录 cd ~/.ssh
b. 生成公钥和私钥:
ssh-keygen -t rsa
然后敲三次回车键,就会生成两个文件id_rsa(私钥),id_rsa.pub(公钥)
c. 将公钥拷贝到要免密登录的目标机器上去
ssh-copy-id 192.168.10.102
.在这里插入图片描述
(2) .ssh文件夹下的文件功能解释
a. ~/.ssh/known_hosts :记录ssh访问过的计算机的公钥
b. id_rsa: 生成的私钥
c. id_rsa.pub:生成的公钥
d. authorized_keys: 存放授权过的免密登录服务器的公钥

(3)基本语法: ssh 另一台电脑的ip地址

rsync

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

(1) 查看rsync使用说明
man rsync | more

(2) 基本语法
rsync -rvl p d i r / pdir/ pdir/fname u s e r @ h a d o o p user@hadoop user@hadoophost:$pdir
命令 命令参数 要拷贝的文件路径/名称 目的用户@主机:目的路径
选项:
-r: 递归
-v 显示复制的过程
-l 拷贝符号连接

(3) 案例实操
把本机/opt/tmp目录同步到hadoop103服务器的root用户下的/opt/tmp目

rsync -rvl /opt/tmp/* root@hadoop103:/opt/tmp

编写集群分发脚本xsync

(1) 需求分析:循环复制文件到所有节点的相同目录下。
a. 原始拷贝:
rsync -rvl /opt/module root@hadoop103:/opt/
b. 期望脚本:
xsync 要同步的文件名称
c. 在/usr/local/bin这个目录下存放的脚本,可以是在系统任何地方直接执行,需要制定路径

(2) 案例实操
a. 在/usr/local/bin目录下创建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 $pdir/$fname $user@hadoop$host:$pdir
	echo  ------------------hadoop$host--------------------------------
	rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

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

[root@hadoop102 bin]# chmod a+x xsync

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

编写分发脚本xcall

(1)需求分析: 在所有主机上同时执行相同的命令
xcall + 命令

(2) 具体实现
a. 在/usr/local/bin 目录下创建xcall文件,文件内容如下:

#!/bin/bash
pcount=$#
if(pcount==0);then
	echo no args;
	exit;
fi
echo ----------------------localhost----------------
$@
for(host=101; host<=108; host++); do
	echo ---------hadoop$host-------------------
	ssh hadoop$host $@
done

(3)修改脚本xcall的执行权限
[root@hadoop102 bin]# chmod a+x xcall

(4)调用脚本形式:xcall操作命令

[root@hadoop102~]# xcall rm -rf /opt/tmp/profile

配置集群

(1) 集群部署规划

在这里插入图片描述
(2) 配置文件
a. core-site.xml

<property>		
	<name>fs.defaultFS</name>        
	<value>hdfs://hadoop102:9000</value>	
</property>	

<property>		
	<name>hadoop.tmp.dir</name>		
	<value>/opt/module/hadoop-2.7.2/data/tmp</value>	
</property>

hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.7.0_79**加粗样式**

hdfs-site.xml

<configuration>		
	<property>		
		<name>dfs.replication</name>		
		<value>3</value>	
	</property>	
	<property>        
		<name>dfs.namenode.secondary.http-address</name>
		<value>hadoop104:50090</value>            			
	</property>
</configuration>

slaves:

hadoop102 hadoop103 hadoop104

yarn.env.sh

export JAVA_HOME=/opt/module/jdk1.7.0_79

yarn-site.xml

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

mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.7.0_79

mapred-site.xml

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

(3) 在集群上分发以上所有的文件

cd /opt/module/hadoop-2.7.2/etc/hadoop
xsync /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml
xsync /opt/module/hadoop-2.7.2/etc/hadoop/yarn-site.xml
xsync /opt/module/hadoop-2.7.2/etc/hadoop/slaves

集群启动及测试

(1) 启动集群
A. 如果集群是第一次启动,需要格式化namenode
[root@hadoop102 hadoop-2.7.2]# bin/hdfs namenode -format
B.启动HDFS:
[root@hadoop102 hadoop-2.7.2]# sbin/start-dfs.sh
[root@hadoop102 hadoop-2.7.2]# jps
[root@hadoop103 hadoop-2.7.2]#
[root@hadoop104 hadoop-2.7.2]#
C. 启动yarn
sbin/start-yarn.sh
注意:namenode和resourcemanager如果不是在同一台机器,不能在namenode上启动yarn.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值