一、Hadoop简单了解
- LocalMode:本地模式,数据存储在本地。【测试用】
- Pseudo-DistributedMode:伪分布式,数据存储在HDFS(hadoop101)。【使用较少】
- Fully-DistributedMode:完全分布式,数据存储在HDFS,多台服务器同时运行。【企业内大量使用】
case1:创建一个word.txt,随意添加字符后,统计某些字符出现次数。
需要注意的是,mapreduce程序要指定输入输出路径,输出路径不能存在!
输出完毕!
当输出路径存在时,会出现报错。
二、Hadoop完全分布式运行模式--开发重点
①编写xsync集群分发脚本(将102中的JDK安全拷贝至103、104)
- scp:服务器与服务器之间的数据拷贝
- 基本语法:
- scp -r fname host:fname
- 命令 递归 目标文件路径/名称 目的用户@主机:目的路径/名称
case2:copy102的JDK至103
Copy完成。
case3:103向102索取文件。
索取完成。
case4:在103操作,把102的数据copy至104
操作完成。
②rsync远程同步工具
- rsync:用于备份和镜像,速度快、避免复制相同内容、支持符号链接。复制速度比scp更快,且rsync只对差异文件做更新,scp则将所有文件完全复制过去。
- 基本语法:
- rsync -av fname host:fname
- 命令 选项参数 目标文件路径/名称 目的用户@主机:目的路径/名称
- 参数解释: -a 归档copy -v 显示复制过程
case5:删除103中wcinput目录,同步102。
同步完成。
③xsync分发脚本
需求:循环复制文件到所有节点的相同目录下。
第一步:查看全局变量:echo $PATH 得知/home/yql/bin是其中一个。
第二步:在bin目录下写脚本:vim xsync。 代码内容: #!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4. 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=(dirname $file); pwd)
#6. 获取当前文件的名称
fname=file)
ssh pdir"
rsync -av fname pdir
else
echo $file does not exists!
fi
done
done
第三步:赋权
第四步:执行
case6:分发全局变量
使用xsync脚本,将my_env.sh分发到全部主机,以达到全局配置环境的效果。
二、SSH免密登录
第一步:进入home目录,进入.ssh目录
第二步:将私钥公钥发放
三、集群配置
- 两点注意事项:
Ø NameNode和SecondaryNameNode不要安装在同一台服务器
Ø ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。
- 四大配置文件
| [core-default.xml] | hadoop-common-3.1.3.jar/core-default.xml |
|---|---|
| [hdfs-default.xml] | hadoop-hdfs-3.1.3.jar/hdfs-default.xml |
| [yarn-default.xml] | hadoop-yarn-common-3.1.3.jar/yarn-default.xml |
| [mapred-default.xml] | hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml |
- 自定义配置文件
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。
按要求配置自定义配置文件:
在hadoop目录下配置下面四个xml文件:
core-site.xml
hdfs-site.xml
yarn-site.xml
mapreduce-sit.xml
最后将配置好的文件使用xsync脚本分发。
集群测试
配置workers
xsync脚本分发。
第一次启动需要使用hdfs namenode -format格式化,当启动失败或者错误启动时,需要删除全部节点的data、logs文件,之后进行格式化后再重新启动。
启动/关闭命令:start-dfs.sh/stop-dfs.sh
之后在浏览器内输入:192.168.10.102:9870后可进入web页面
集群至此启动成功!