完全分布式部署 Hadoop

分析:
1) 准备 3 台客户机(关闭防火墙、 静态 ip、主机名称)
2) 安装 jdk
3) 配置环境变量
4) 安装 hadoop
5) 配置环境变量
6) 安装 ssh
7) 配置集群
8) 启动测试集群

1 虚拟机准备

复制3份备份的hadoop101,然后将其加入到vmware中
如果之前没添加用户则可以

#切换到root
adduser joker
passwd joker

2 主机名设置
https://blog.csdn.net/qq_35641192/article/details/80173625

3 scp

scp 可以实现服务器与服务器之间的数据拷贝。
1) 将 hadoop101 中/opt/module 和/opt/software 文件拷贝到 hadoop102、 hadoop103 和 hadoop104 上。

scp -r /opt/module/ root@hadoop102:/opt
scp -r /opt/module/ root@hadoop103:/opt
scp -r /opt/module/ root@hadoop104:/opt
#下面的命令要在root用户下完成
chown joker:joker -R software/ module/

2) 将 hadoop101 服务器上的/etc/profile 文件拷贝到 hadoop102 、 hadoop103 和 hadoop104 上。

scp /etc/profile root@hadoop102:/etc/profile
scp /etc/profile root@hadoop103:/etc/profile
scp /etc/profile root@hadoop104:/etc/profile

source /etc/profile

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

scp root@hadoop103:/opt/test/haha root@hadoop104:/opt/test/

4 SSH 无密码登录

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

ssh 192.168.25.103
#输入密码即可登录
exit #退出登录

The 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)进入到我的 home 目录

cd ~
ls -al
cd .ssh/
#如果无.ssh目录则只要ssh远程访问一台服务器则可以生成了

2) 生成公钥和私钥:

ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
3)将公钥拷贝到要免密登录的目标机器上

ssh-copy-id hadoop103
ssh-copy-id hadoop104
#最后也要给自己保存一份
ssh-copy-id hadoop102

3 .ssh 文件夹下的文件功能解释:
1) ~/.ssh/known_hosts : 记录 ssh 访问过计算机的公钥(public key)
2) id_rsa : 生成的私钥
3) id_rsa.pub : 生成的公钥
4) authorized_keys :存放授权过得无秘登录服务器公钥

5 rsync

rsync 远程同步工具,主要用于备份和镜像。具有速度快、 避免复制相同内容和支持符号链接的优点。
rsync 和 scp 区别: 用 rsync 做文件的复制要比 scp 的速度快, rsync 只对差异文件做更新。 scp 是把所有文件都复制过去。

1 基本语法

rsync -rvl $pdir/$fname $user@hadoop$host:$pdir

命令 命令参数 要拷贝的文件路径/名称 目的用户@主机:目的路径
选项
-r 递归
-v 显示复制过程
-l 拷贝符号连接
2 案例实操
把本机/opt/tmp 目录同步到 hadoop103 服务器的 root 用户下的/opt/tmp 目录

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

6 编写集群分发脚本 xsync

1 需求分析:循环复制文件到所有节点的相同目录下。
1)原始拷贝:
rsync -rvl /opt/module root@hadoop103:/opt/
2)期望脚本:
xsync 要同步的文件名称
3)在/usr/local/bin 这个目录下存放的脚本,可以在系统任何地方直接执行。
2 案例实操:
1)在/usr/local/bin 目录下创建 xsync 文件, 文件内容如下:

cd /usr/local/bin
touch xsync
chmod 777 xsync 
chown joker:joker xsync 
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=103; host<105; host++)); do
#echo $pdir/$fname $user@hadoop$host:$pdir
echo --------------- hadoop$host ----------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

7 配置集群

1 集群部署规划
这里写图片描述

2 配置文件
102:

cd /opt/module/hadoop-2.7.2/etc/hadoop/
vim core-site.xml
<configuration>
<!-- 指定 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>

echo $JAVA_HOME
vim hadoop-env.sh 
export JAVA_HOME=/opt/module/jdk1.8.0_151

vim hdfs-site.xml 
<!-- 指定 HDFS 副本的数量 -->
<property>
        <name>dfs.replication</name>
        <value>3</value>
</property>
<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:50090</value>
</property>

vim slaves 
hadoop102
hadoop103
hadoop104

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

vim mapred-site.xml 
<!-- 指定 mr 运行在 yarn 上 -->
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>

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

cd /opt/module/hadoop-2.7.2/etc/
xsync hadoop/

4 查看文件分发情况
103,104:cat /opt/module/hadoop-2.7.2/etc/hadoop/slaves

8 集群启动及测试

1 先删除克隆来的data/和log/

cd /opt/module/hadoop-2.7.2/
rm -rf data/ logs/

2 如果集群是第一次启动,需要格式化 namenode

#102上执行
bin/hdfs namenode -format

3 启动 HDFS与启动 yarn:

#102上执行
sbin/start-dfs.sh
#可以通过jps查看是否正确启动
#103上执行
sbin/start-yarn.sh

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

4 集群基本测试
1) 上传文件到集群

#102上执行
#上传小文件
hadoop fs -mkdir -p /user/joker/input
hadoop fs -put wcinput/wc.input /user/joker/input
#上传大文件
hadoop fs -put /opt/software/jdk-8u151-linux-x64.tar.gz /user/joker

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

#102上执行
#文件存储路径
cd /opt/module/hadoop-2.7.2/data/tmp/dfs/data/current/BP-688790930-192.168.25.102-1525647195991/current/finalized/subdir0/subdir0

#查看文件内容
[root@hadoop102 subdir0]# cat blk_1073741825
jokerda
hadoop
hadoop jokerda
spark hive hbase
zookeeper kalfka

#删除大文件
hadoop fs -rm -f /user/joker/jdk-8u151-linux-x64.tar.gz

ps:102上上传了103,104也会产生同样的副本文件

9 Hadoop 启动停止方式
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 全部启动(不建议使用)
start-all.sh
stop-all.sh

10 集群时间同步
时间同步的方式: 找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。
1 时间服务器配置(必须 root 用户)
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 配置文件

[root@hadoop102 桌面]# vim /etc/ntp.conf
#修改内容如下
#修改 1
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 为
restrict 192.168.25.0 mask 255.255.255.0 nomodify notrap
#修改 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
#添加 3
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:                                            [确定]
[root@hadoop102 桌面]# service ntpd status
ntpd (pid  2997) 正在运行...

5)执行

chkconfig ntpd on

2 其他机器配置(必须 root 用户)
1)在其他机器配置 10 分钟与时间服务器同步一次

#103,104输入如下内容
[root@hadoop103 hadoop]# crontab -e
#编写脚本
*/10 * * * * /usr/sbin/ntpdate hadoop102

2) 修改任意机器时间

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

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

[root@hadoop103 hadoop]# date
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值