Hadoop的三大工程
1 MapReduce(离线计算框架)
A:基本思想
对海量数据的处理(分布式)
思想:
分而治之
大数据集分为小的数据集
每一个数据集,进行逻辑业务处理(Map)
合并统计数据结果(reduce)
B:计算过程(Map阶段和Reduce阶段)
Map阶段并行处理输入数据(分开处理数据)
Reduce阶段对Map结果进行汇总
Shuffle连接Map和Reduce两个阶段
Map Task将数据写到本地磁盘
Reduce Task从每个Map Task上读取一份数据
C:优缺点
具有很好的容错性和扩展性
适合简单的批处理任务
启动开销大、过多使用磁盘导致效率低下等
input -> map --> shuffle(洗牌) --> reduce --> output
2、HDFS:存储海量数据
A:基本概念
分布式
安全性:(存在副本数据,默认存储3份)
数据是以block(块)的方式存储的
B:HDFS的组成部分
NameNode:
a、主节点,存储文件的元数据,如文件名,文件目录,文件属性(生成时间,副本数,文件权限)
以及每个文件的块列表和块所在的DataNode等
b、数据存在内存和本地磁盘中
本地磁盘中有镜像文件(fsimage)和编辑日志(edites)
DataNode:
a、在本地文件系统存储文件块数据,以及快数据的校验和
Secondary NameNode:用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据快照
3、YARN:分布式资源管理架构
A:基本概念
管理整个集群资源(内存、CUP核数)
分配调度集群资源
B:组成部分
ResourceManager:资源管理者,进行应用的管理,资源的调度,每个运行在YARN上的应用都需要向 ResourceManager申请资源
NodeManager:每一台机器都是一个NodeManager,YARN是一个分布式资源管理器,所有的机器的资源都是交给 ResourceManager管理
AppMstr(ApplicationManager):每一个运用在YARN上的应用有一个AppMstr(应用管理者),应用通过AppMstr去申请资源,划分任务。
应用申请的资源会放在一个Container中,每个任务只在Container上运行
Container:运行每一个任务
二、Hadoop按照配置(为分布式)
1、准备工作:
jdk 环境
下载hadoop-2.5.0.tar.gz 并解档,(下载地址: http://archive.apache.org/dist/hadoop/common/)
2、配置host
vim /etc/hosts
192.168.0.135 zhuojing-virtual-machine-com
3、配置HDFS与启动
a:配置 hadoop下的/etc/hadoop/hadoop-env.sh 和 mapred-env.sh jdk路径
b:配置hadoop下etc/hadoop/core-site.xml
fs.defaultFS
hdfs://zhuojing-virtual-machine-com:9000
hadoop.tmp.dir
/home/zhuojing/big-data/cdh5.3.6/hadoop-2.5.0-cdh5.3.6/data/tmp
c:配置hadoop下etc/hadoop/core-site.xml
dfs.replication
1
dfs.namenode.secondary.http-address
zhuojing-virtual-machine-com:50090
dfs.namenode.http-address
zhuojing-virtual-machine-com:50070
dfs.permissions
false
d:文件格式化
bin/hdfs namenode -format (第一次启动是执行即可)
e:启动
sbin/hadoop-daemon.sh start namenode 启动HDFS的namenode主节点
sbin/hadoop-daemon.sh start datanode 启动HDFS的datanode从节点
启动后 使用 jps可以看见namenode和datanode进程
注:启动后可以用jps查看进程,同时在hadoop下会生成logs的日志目录
web界面:ip:50070
云服务用内网注册(注意不要再hosts文件中做外网的映射,不然datanode无法启动)
f:案例,使用mapreduce程序读取HDFS上是文件(统计单词的程序)
①:创建目录:bin/hdfs dfs -mkdir -p /user/ubuntu/mapreduce/wordcount/input 注:bin/hdfs dfs -mkdir -p hdfs文件上路径
②:将文件移入HDFS目录中:
bin/hdfs dfs -put wcinput/input.txt /user/ubuntu/mapreduce/wordcount/input/ 注:bin/hdfs dfs -put 为本地文件 hdfs文件目录
查看文件:bin/hdfs dfs -cat /user/ubuntu/mapreduce/wordcount/input/input.txt
③:运行mapreduce程序(单词统计)
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /user/ubuntu/mapreduce/wordcount/input /user/ubuntu/mapreduce/wordcount/output
4、配置yarm和启动
a:配置hadoop写etc/hadoop下的yarn-env.sh 配置java环境(export JAVA_HOME=路径)不配的也行
b:etc/hadoop/yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
zhuojing-virtual-machine-com
yarn.log-aggregation-enable
true
yarn.log-aggregation.retain-seconds
640800
b: 启动主节点:
sbin/yarn-daemon.sh start resourcemanager
启动从节点
sbin/yarn-daemon.sh start nodemanager
启动后使用jps 可看到 resourcemanager 和 nodemanager进程
c:配置mapreduce程序在yarn上运行
①:配置jdk路径(可以不配):配置etc/hadoop/下mapred-env.sh
② 重命名:mapred-site.xml.template为:mapred-site.xml(etc/hadoop/)
mv mapred-site.xml.template mapred-site.xml
配置etc/hadoop/mapred-site.xml
mapreduce.framework.name
yarn