hadoop 运行模式
- 一、ssh
- 二、Hadoop伪分布模式
- <1>设置三种模式的切换( 配置文件 + 守护进程的启动 = hadoop集群 )
- <2>web的端口
- <3>Hadoop的启动脚本 ( hdfs + yarn )
- 三、完全分布式搭建
- <1> 概念
- <2> 部署
一、ssh
SSH:安全的远程连接
xshell/putty工具连接linux系统时,使用的方式就是ssh
语法: ssh ip地址
密码
伪分布模式:主节点 master 管理 多个 从节点 slave
SSH的无秘登陆:
二、Hadoop伪分布模式
<1>设置三种模式的切换( 配置文件 + 守护进程的启动 = hadoop集群 )
hadoop/etc/hadoop (hadoop 连接文件)
hadoop/etc/full 完全分布式
hadoop/etc/local 本地模式
hadoop/etc/pesudo 伪分布模式
- 修改配置文件
hadoop-evn.sh
export JAVA_HOME=/opt/java/jdk
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop0:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
- 格式化文件系统
hadoop namenode -format
- 启动守护进程
先启动HDFS: sbin/start-dfs.sh
再启动Yarn: sbin/start-yarn.sh
- 可以通过修改hadoop连接文件的指向,实现不同模式的切换
<2>web的端口
50070 //namenode http port (通过浏览器访问的端口)
50075 //datanode http port (通过浏览器访问的端口)
50090 //2namenode http port (通过浏览器访问的端口)
8020 // namenode rpc port
50010 // datanode rpc port
<3>Hadoop的启动脚本 ( hdfs + yarn )
common
hdfs : namenode / datanode / secondarynamenode (分布式文件系统)
yarn : resourcemanager / nodemanager (资源调度和管理)
mapreduce
启动脚本:
start-all.sh (不推荐使用) (start-dfs.sh + start-yarn.sh)
stop -all.sh (不推荐使用)
start-dfs.sh (推荐使用:启动名称节点,数据节点,辅助名称节点)
start-yarn.sh (推荐使用:启动资源管理器,节点管理器)
stop-dfs.sh
stop-yarn.sh
三、完全分布式搭建
<1> 概念
将Hadoop的守护进程运行在一个集群上
NameNode
DataNode
SecondaryNameNode
ResourceManager
NodeManager
完全分布式:至少5个节点(对数据进行备份)
名称节点:管理文件系统,管理节点 (一台机器)
数据节点:存储数据 (一台机器)
数据节点:存储数据(备份) (一台机器)
数据节点:存储数据(备份) (一台机器)
数据节点:存储数据(备份) (一台机器)
<2> 部署
- 克隆3台
右键centos虚拟机,选择管理,选择克隆,选择完整硬件克隆 - 启动四个节点
- 修改虚拟机的配置信息
3.1修改主机名
/etc/hostname
/etc/sysconfig/network
3.2修改主机名称和IP地址的映射
/etc/hosts
3.3修改IP地址
/etc/sysconfig/network-scripts/ifcfg-ens33 - 免密登陆SSH
从主节点无秘登陆到所有的从节点
4.1 删除所有节点上的~/.ssh目录中的所有内容:
rm -rf ~/.ssh/*
ssh s201 rm -rf ~/.ssh/* (xcall.sh)
ssh s202 rm -rf ~/.ssh/* (xcall.sh)
ssh s203 rm -rf ~/.ssh/* (xcall.sh)
4.2 在当前节点上生成密钥
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
4.3 将当前生成 的公钥 移动到其他所有的子节点上
命令:scp 远程复制 ,将id_rsa_pub 分别复制到s200~s203上,并且将其追加到~/.ssh/authorized_keys
scp ~/.ssh/id_rsa_pub zhangsan@master:/home/zhangsan/.ssh/authorized_keys
scp ~/.ssh/id_rsa_pub zhangsan@s201:/home/zhangsan/.ssh/authorized_keys
scp ~/.ssh/id_rsa_pub zhangsan@s202:/home/zhangsan/.ssh/authorized_keys
scp ~/.ssh/id_rsa_pub zhangsan@s203:/home/zhangsan/.ssh/authorized_keys
- 配置完全分布式
1.etc配置文件使用完全分布式:
删除旧的连接:
ssh s201 rm -rf /opt/programfile/hadoop/etc/hadoop (xcall.sh)
ssh s202 rm -rf /opt/programfile/hadoop/etc/hadoop (xcall.sh)
ssh s203 rm -rf /opt/programfile/hadoop/etc/hadoop (xcall.sh)
ssh master rm -rf /opt/programfile/hadoop/etc/hadoop (xcall.sh)
创建新的连接
ssh s201 ln -s /opt/programfile/hadoop/etc/full /opt/programfile/hadoop/etc/hadoop (xcall.sh)
ssh s202 ln -s /opt/programfile/hadoop/etc/full /opt/programfile/hadoop/etc/hadoop (xcall.sh)
ssh s203 ln -s /opt/programfile/hadoop/etc/full /opt/programfile/hadoop/etc/hadoop (xcall.sh)
2.修改配置文件:full 中的配置文件
core-site.xml
fs.defaultFS ---> hdfs://master:9000
hdfs-site.xml
dfs.replication ---> 3
mapred-site.xml
不变,和伪分布式一样
yarn-site.xml
yarn.resourcemanager.hostname ---> master
- 数据的同步(主节点和从节点的配置信息保持一致)
scp -r full zhangsan@s201:/opt/programfile/hadoop/etc/
scp -r full zhangsan@s202:/opt/programfile/hadoop/etc/
scp -r full zhangsan@s203:/opt/programfile/hadoop/etc/
- 格式化文件系统
清空伪分布模式下的数据:
rm -rf /tmp/*
ssh s201 rm -rf /tmp/* (xcall.sh)
ssh s201 rm -rf /tmp/* (xcall.sh)
ssh s201 rm -rf /tmp/* (xcall.sh)
清空日志文件:
rm -rf /opt/programfile/hadoop/logs/* (xcall.sh)
ssh s201 rm -rf /opt/programfile/hadoop/logs/* (xcall.sh)
ssh s201 rm -rf /opt/programfile/hadoop/logs/* (xcall.sh)
ssh s201 rm -rf /opt/programfile/hadoop/logs/* (xcall.sh)
格式化:
hadoop namenode -format
- 启动hadoop进程
主节点:
NameNode
Secondary NameNode
ResourceManager
从节点:
DataNode
NodeManager - 通过web 页面进行查看
http://master:55070 <3> 部署脚本的编写
master 主节点 操作子节点
常规操作:jsp / rm / ln-s … …
拷贝同步操作:
脚本1:常规操作
需求:在所有的节点上创建文件test.sh
ssh 节点1主机名称 命令
ssh 节点2主机名称 命令
ssh 节点3主机名称 命令
ssh 节点4主机名称 命令
ssh 节点5主机名称 命令
ssh 节点6主机名称 命令
ssh 节点7主机名称 命令
.... ....
编写脚本1:xcall.sh
执行脚本:xcall.sh touch ~/test.sh(参数1 参数2)
xcall.sh rm -rf path路径(参数1 参数2 参数2)
params=$@
for(( i=201;i<=203;i=$i+1 ));
do
ssh s$i "$params"
done
-----------------------------------------
#!/bin/bash
# 编写脚本,在分布式集群上操作各个节点
#1.接受用户需要执行的命令
params=$@
#2.循环执行命令
i=201
for(( ; i <= 203 ; i=$i+1 ));
do
echo "-------------s$i [--->] $params"
ssh s$i "$params"
echo "-------------------------------"
echo
done
编写脚本2:xsync.sh
执行脚本:xsync.sh /home/zhangsan/myfile.txt
正常的同步命令:scp /home/zhangsan/myfile.txt 用户名称@主机名称:/home/zhangsan/
scp myfile.txt 用户名称@主机名称:/home/zhangsan/
命令1:dirname path:
上一级
当前路径.
例如:dirname /home/zhangsan/myfile.txt
/home/zhangsan
dirname myfile.txt
. 表示/home/zhangsan/.
命令2:pwd 上面命令的结果
-----------------------------------------
执行命令:xsync.sh [/home/zhangsan/] myfile.txt
#!/bin/bash
# 编写脚本,在分布式集群上数据的同步
#1.接受用户需要执行的命令
param=$1
# 获取当前文件的路径
#dirname 命令:获取当前文件的绝对路径
dir=`dirname $param`
#basename 命令:获取当前文件的名称
fileName=`basename $param`
#2.循环执行命令
i=201
for(( ; i <= 203 ; i=$i+1 ));
do
echo "-------------s$i [--->] $params"
echo $dir
echo $fileName
done