Hadoop是一个由Apache基金会所开发的分布式系统基础架构,创始人是Doug Cutting。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
Apache Hadoop起源:
1. Apache Lucene开源的高性能全文检索工具包
2. Apache Nutch开源的Web搜索引擎
3. Google三大论文MapReduce/GFS/BigTable
4. Apache Hadoop海量数据处理
Hadoop 项目的四大模块
1. Hadoop Common
2. Hadoop Distributed File System (HDFS):
3. Hadoop YARN
4. Hadoop MapReduce
YARN是云的操作系统,作用如下:
1. 给部署在YARN上的应用,分配资源。
2. 管理资源
3. JOB/APPLICATION 调度
YARN是相当于Win7,XP系统,给QQ、YY、播放器等等,分配一些资源(CPU、内存、网络IO、磁盘IO等),管理资源。
Hadoop 版本:
1. 以0.20.x和1.x.x 版本为主
2. 0.23.x 版本为主
3. 2.x.x 版本为主 2.2.0比较好的版本
需要掌握的技能如下:
1. 云计算,Hadoop 2.x
2. 服务总线,SOA/OSB,Dubble
3. 全文检索,Lucunce、Solr、Nutch
比较稳定的cenOS版本:cenOS6.4
HDFS模块功能
1. NameNode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在DataNode等。
2. DataNode在本地文件系统存储文件块数据,以及块数据的校验和。
3. Secondary NameNode用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。
YARN模块功能
1. ResourceManager
1)处理客户端请求
2)启动/监控ApplicationMaster
3)监控NodeManager
4)资源分配与调度
2. NodeManager
1)单个节点上的资源管理
2)处理来自ResourceManager的命令
3)处理来自ApplicationMaster的命令
3. ApplicationMaster
1)数据切分
2)为应用程序申请资源,并分配给内部任务
3)任务监控与容错
4. Container
1对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息
离线计算框架MapReduce
1. 将计算过程分为两个阶段,Map和Reduce
1)Map阶段并处理输入数据
2)Reduce阶段对Map结果进行汇总'
2. Shuffle连接Map和Reduce两个阶段
1)Map Task将数据写到本地磁盘
2)Reduce Task从每个Map Task上读取一份数据
3. 仅适合离线批处理
1)具有很好的容错性和扩展性
2)适合简单的批处理任务
4. 缺点明显
1)启动开销大、过多使用磁盘导致效率低下等
日志文件
1. 启动日志文件目录$HADOOP_HOME/logs
2. 分析日志文件的格式【log】和【out】
1).log:通过log4j记录的,记录大部分应用程序的日志信息
2).out:记录标准输出和标准错误日志,少量记录
3. 日志文件的命名规则
【框架名称-用户名-进程名-主机名-日志格式后缀】
bin/hdfs dfs -put
bin data etc include lib libexec LICENSE.txt logs NOTICE.txt README.txt
bin/hdfs dfs -put ./wc.txt /data01 把wc.txt复制到/data01目录下
bin/hdfs dfs -ls /data01 查看/data01目录下的文件
bin/hdfs dfs -cat /data01/wc.txt 查看wc.txt内容
bin/hdfs dfs text /data01/wc.txt 查看wc.txt内容
bin/hdfs dfs tail /data01/wc.txt 查看wc.txt文件尾部1K字节的内容,一般用于查看日志
hdfs常用命令如下:
cat 将路径指定文件的内容输出到stdout。
chgrp 改变文件所属的组
chmod 改变文件的权限
chown 改变文件的拥有者,即权限
copyFromLocal 除了限定源路径是一个本地文件外,和put命令相似。
copyToLocal 除了限定目标路径是一个本地文件外,和get命令类似。
cp 将文件从源路径复制到目标路径。这个命令允许有多个源路径,此时目标路径必须是一个目录
du 显示目录中所有文件的大小,或者当只指定一个文件时,显示此文件的大小。
dus 显示文件的大小。
expunge 清空回收站。
get 复制文件到本地文件系统。
getmerge 接受一个源目录和一个目标文件作为输入,并且将源目录中所有的文件连接成本地目标文件。
ls ls命令的递归版本。类似于Unix中的ls -R。
mkdir 接受路径指定的uri作为参数,创建这些目录。其行为类似于Unix的mkdir -p,它会创建路径中的各级父目录。
movefromLocal 输出一个”not implemented“信息。
mv 将文件从源路径移动到目标路径。
put 从本地文件系统中复制单个或多个源路径到目标文件系统。也支持从标准输入中读取输入写入目标文件系统。
rm 删除指定的文件。只删除非空目录和文件。
rmr delete的递归版本。
setrep 改变一个文件的副本系数。
stat 返回指定路径的统计信息。
tail 将文件尾部1K字节的内容输出到stdout。支持-f选项,行为和Unix中一致。
test 选项:
-e 检查文件是否存在。如果存在则返回0。
-z 检查文件是否是0字节。如果是则返回0。
-d 如果路径是个目录,则返回1,否则返回0。
示例:hadoop fs -test -e filename
text 将源文件输出为文本格式。
touchz 创建一个0字节的空文件。
jps 查看已经启动的服务,例如:nameNode、dataNode等
clear 清屏
hadoop-yarn.dragon.org:50070/dfshealth.jsp
hadoop-yarn.dragon.org:8088/cluster
启动HDFS和YARN方式
1. 方式一,逐一启动(推荐)
hadoop-daemon.sh、yarn-daemon.sh
2. 方式二,分开启动(使用了ssh协议)
start-dfs.sh、start-yarn.sh
3. 方式三,一起启动(不推荐,hadoop1启动方式,使用了ssh协议)
start-all.sh
hadoop的四个默认配置文件
core-default.xml、hdfs-default.xml、yarn-default.xml、mapred-default.xml
一般企业配置:两个主节点,分别是1个NameNode,1个ResourceManager
N个从节点,分别是DataNode和NodeManager
HDFS系统架构图
NN与SNN关系
YARN框架架构图
YARN框架架构图2
以下是我精心整理的文章: