⼤数据处理之Hadoop
⼤数据Hadoop
基础:
1. SQL功底
2. Linux功底
3. Java SE
怎么学?
第⼀阶段:⼤数据基础 Hadoop2.x
⼀、⼤数据应⽤发展前景
数据公司、政府、⾦融、银⾏、电⼦商务
最经典的⼤数据的案例:啤酒和尿布
应⽤分析:
统计
推荐
机器学习(分类、聚类)
⼈⼯智能,预测(算法)
SQL on Hadoop
Hive ⾻灰级玩家
Prestore(国外⽐较多)
Impala(国外⽐较多,不是很稳定)
Phoneix(基于HBase)国外运⽤⽐较多
Spark SQL
Hadoop诞⽣⽹络可扩展,分析可存储
Common:⼯具、基础,为服务
来源(Google) -----> Hadoop诞⽣的东西
GFS(C语⾔编写的) ------> HDFS(Java编写的,也是分布式的):存储海量数据
分布式(思想:分⽽治之,⼤数据集分为许多⼩的数据集,每个数据集都进⾏逻辑业务处理(map),合并统计数据集结果(reduce))
分布式
安全性(副本数据,每⼀个数据会有3个副本)
数据是以block的⽅式进⾏存储
MapReduce ----------> MapReduce :对海量数据的分析处理
BigTable ------> HBase :
YARN:分布式资源管理框架(Hadoop2开始出现)
管理整个集的资源(内存、cpu核数)
分配调度集的资源
检索⼯具
Nutch
Lunence
⼆、Hadoop概述
2.1 Apache Hadoop 起源
Apache Lucene:开源的⾼性能全⽂检索⼯具包
Apache Nutch:开源的Web搜索引擎
Google三⼤论⽂:MapReduce、GFS、BigTable
Apache Hadoop:⼤规模数据处理
2.2 HDFS 系统架构图
NameNode:主节点---存储⽂件的元数据如⽂件名、⽂件⽬录结构、⽂件属性(⽣成时间,副本数,⽂件权限),以及每个⽂件的块列表和块所在的DataNode等。
存在内存当中
本地磁盘
fsimage:镜像⽂件
edites:编辑⽇志
Datanodes:从节点----在本地⽂件系统存储⽂件块数据,以及块数据的校验和。
Secondary NameNode:⽤来监控HDFS状态的辅助后台程序,每隔⼀段时间获取HDFS快照。
rep:副本数
2.3 YARN 架构图
Node Manager:每台机器都需要管理
单个节点上的资源管理
处理来⾃ResourceManager的命令
处理来⾃ApplicationMaster的命令
Resource Manage:管理整个集
处理客户端请求
启动/监控ApplicationMaster
监控NodeManager
资源分配与调度
App Mstr:ApplicationMaster 应⽤管理者,每有⼀个新开启的项⽬,就向Resource Manager申请⼀个管理者,对项⽬进⾏管理、资源分配和调度
数据切分
为应⽤程序申请资源,并分配给内部任务
任务监控与容错
Container:容器,⼀个项⽬,只能在⼀个容器中运⾏,相当于是分配给这个项⽬的资源
对任务运⾏环境的抽象,封装了cpu、内存等多维资源以及环境变量、启动命令等任务运⾏相关的信息
2.4 MapReduse 离线计算框架
将计算过程分为两个阶段,Map和reduce
Map阶段并⾏处理输⼊数据
Reduce阶段对Map结果进⾏汇总
Shffle连接Map和Reduce两个阶段
Map Task 将数据写到本地磁盘上
Reduce Tase 从每个Map Task上读取⼀份数据
仅适合离线批处理
具有很好的容错性和扩展性
适合简单的批处理任务
缺点明显
启动开销⼤
过多使⽤磁盘导致效率低下等
2.5 MapReduce on YARN
三、Hadoop 2.x ⽣态系统
Sqoop:SQL on Hadoop 将关系型数据中的数据存储到HDFS中
Flume:⽇志收集框架
Oozie:对整个项⽬进⾏管理和调度(⼯具框架)
Hive:在MapReduce基础上
Pig:类似Hive
HBase:分布式数据库
Cloudera Manager:集管理框架
Zookeeper:协作框架,⾼可⽤
Hue:将所有的管理页⾯集成到⼀起
四、Hadoop 环境搭建
4.1 环境要求
⼀些基本命令
查看软件 rpm -qa|gre java
卸载软件 rpm -e --
vim:G 进⼊到⽂件的末尾ls
JDK
Hadoop
tar -zxvf Hadoop-2.5. -C /opt/modules/
修改 /Users/theniceboy/Desktop/modules/hadoop-2.5.0/etc/hadoop/hadoop-env.sh 中的 JAVA_HOME # The java implementation to use.
export JAVA_HOME=/usr/local/java/jdk1.8.0_131
4.2 本地模式
MapReduce 程序运⾏在本地,启动 JVM
在 hadoop-2.5.0下新建 wcinput ⽬录并在该⽬录下新建⼀个 wcinput ⽂件,输⼊内容
hadoop yarn
hadoop mapreduce
hadoop hdfs
yarn nodemanager
hadoop resuourcemanager
在 hadoop-2.5.0 ⽬录下运⾏ hadoop 中的 wordcount ⽅法(统计单词出现的个数)
wcinput 输⼊⽂件夹
wcoutput 输出结果的⽂件夹,此⽂件夹不能预先存在
[root@MagiwiseCentOS-1 hadoop-2.5.0]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount wcinput wcouput 运⾏结果
4.3 HDFS 环境配置
修改 hadoop-2.5.0/etc/l 配置⽂件
<configuration>
<property>
<name>fs.defaultFS</name>
<!--hostname-->
<value>hdfs://hadoop:8020</value>
</property>
<!--配置hadoop运⾏的临时⽬录-->
<property>
<name&p.dir</name>
<value>/opt/modules/hadoop-2.5.0/data/tmp</value>
hadoop分布式集搭建</property>
</configuration>
修改 hadoop-2.5.0/etc/l 配置⽂件
<configuration>
<!--配置hdfs中存储的份数-->
<property>
<name&plication</name>
<value>1</value>
</property>
</configuration>
Format the filesystem
[root@hadoop hadoop-2.5.0]# bin/hdfs namenode -format
启动 namenode
[root@hadoop hadoop-2.5.0]# sbin/hadoop-daemon.sh start namenode
启动datanode
[root@hadoop hadoop-2.5.0]# sbin/hadoop-daemon.sh start datanode
使⽤ jps 命令查看启动情况
⽇志⽂件存春在 logs ⽬录中
在 hdfs 中新建⽂件夹操作 hdfs 的命令都在 bin/hdfs ⽬录下⾯,具体操作命令类似于Linux,也可以访问 50070 端⼝进⾏查看(hdfs⽂件管理系统web页⾯)[root@hadoop hadoop-2.5.0]# bin/hdfs dfs -mkdir -p /usr/root/maperduce/wordcount/input
上传⽂件到 hdfs ⽬录中
[root@hadoop hadoop-2.5.0]# bin/hdfs dfs -put /opt/modules/hadoop-2.5.0/wcinput/wc.input /usr/root/mapreduce/wordcount/input/
下载 hdfs ⽬录中的⽂件
[root@hadoop hadoop-2.5.0]# bin/hdfs dfs -get /usr/root/mapreduce/wordcount/input/wc.input
运⾏⼀下 wordcount
[root@hadoop hadoop-2.5.0]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /usr/root/mapreduce/wordcount/input/wc.input /usr/root/mapreduce/wordcount/output 或者
[root@hadoop hadoop-2.5.0]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-
2.5.0.jar wordcount /usr/root/mapreduce/wordcount/input//usr/root/mapreduce/wordcount/output 查看⼀下输出
[root@hadoop hadoop-2.5.0]# bin/hdfs dfs -ls /usr/root/mapreduce/wordcount/output
4.4 配置 yarn
修改 hadoop-2.5.0/etc/hadoop/yarn-env.sh 配置⽂件
# some Java parameters
export JAVA_HOME=/usr/local/java/jdk1.8.0_281
修改 hadoop-2.5.0/etc/l 配置⽂件
<configuration>
<!--配置运⾏ mapreduce-->
<property>
<name&demanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 配置resourcemanager在哪⼀台机器上 -->
<property>
<name&sourcemanager.hostname</name>
<value>hadoop</value>
</property>
</configuration>
修改 hadoop-2.5.0/etc/hadoop/slaves ⽂件,记录从节点所在的机器,⾥⾯记录的是主机名或者ip地址
hadoop
启动 yarn resourcemanager
[root@hadoop hadoop-2.5.0]# sbin/yarn-daemon.sh start resourcemanager
启动 yarn nodemanager
[root@hadoop hadoop-2.5.0]# sbin/yarn-daemon.sh start nodemanager
查看启动情况
yarn 启动成功后,可以在 8088 端⼝访问web页⾯
修改 hadoop-2.5.0/etc/hadoop/mapred-env.sh 配置⽂件
export JAVA_HOME=/usr/local/java/jdk1.8.0_281
复制 plate 并重命名为 l,然后修改配置
<configuration>
<!--配置 mapreduce 运⾏在 yarn 上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
重新运⾏ wordcount 运⾏之前,必须要删除之前存在的output⽬录
[root@hadoop hadoop-2.5.0]# bin/hdfs dfs -rm -r /usr/root/mapreduce/wordcount/output*
[root@hadoop hadoop-2.5.0]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /usr/root/mapreduce/wordcount/input/ /usr/root/mapreduce/wordcount/output 进⼊ yarn 管理界⾯查看
运⾏结束,进⼊ HDFS 查看结果
4.5 总结
Hadoop 2.x
common
HDFS
存储数据
namenode
存储⽂件系统的元数据,命名空间namespace
datanode
存储数据
secondarynamenode
辅助namenode⼯作,合并两个⽂件(定时周期)
namenode只是存储⽂件名称、⽂件结构等信息,具体的数据存储在datanode中,所以数据流不从namenode过
YARN
Hadoop 操作系统 ---> data 操作系统
管理所有的资源
可以运⾏各种框架
对于每⼀个运⾏在其上⾯的应⽤都分配⼀个应⽤管理者
通过容器 container 将资源分配给应⽤,体现了隔离的思想
Resourcemanager
整个集资源的管理和调度
nodemanager
管理每个节点的资源与调度
MapReduce
分⽽治之
map
分,
reduce
合并
input --> map --> shuffle(洗牌,排序) --> reduce --> output
运⾏在yarn上的数据处理框架
分布式并⾏的计算框架
运⾏模式
本地模式仅仅⽤于测试,⼩数据量
yarn 模式
hdfs 命令
bin/hdfs dfs
[root@hadoop hadoop-2.5.0]# bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /usr/root/mapreduce/wordcount/input/ /usr/root/mapreduce/wordcount/output 4.6 问题解析
hdfs 格式化错误
主机名与IP地址的映射
namenode启动出错
⽇志信息
在安装⽬录下logs⽂件夹中,直接看log结尾的⽂件
more xxxx.log 分页查看
tail -f xxx.log ⼀般⽤于查看启动⽇志,⽂件的末尾
Tail -100f xxx.log 查看倒数100⾏
4.7 查看 yarn 历史服务器以及⽇志聚集
第⼀步:启动历史服务器
[root@hadoop hadoop-2.5.0]# sbin/mr-jobhistory-daemon.sh start historyserver
第⼆步:点击进去
启动 log Aggregation ⽇志的聚集这个是yarn上的⼀个服务,所以在 l中进⾏配置
将运⾏完成以后,将⽇志信息上传到HDFS系统上
配置 log Aggregation ⽇志的聚集
<!-- 配置 yarn 的⽇志聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- ⽇志保存的最长时间以秒为单位-->
<property>
<name>ain-check-interval-seconds</name>
<value>640800</value>
</property>
重启 yarn
[root@hadoop hadoop-2.5.0]# sbin/yarn-daemon.sh stop resourcemanager
stopping resourcemanager
[root@hadoop hadoop-2.5.0]# sbin/yarn-daemon.sh stop nodemanager
stopping nodemanager
[root@hadoop hadoop-2.5.0]# sbin/mr-jobhistory-daemon.sh stop historyserver
stopping historyserver
[root@hadoop hadoop-2.5.0]# sbin/yarn-daemon.sh start resourcemanager
starting resourcemanager, logging to /opt/modules/hadoop-2.5.0/logs/yarn-root-resourcemanager-hadoop.out
[root@hadoop hadoop-2.5.0]# sbin/yarn-daemon.sh start nodemanager
starting nodemanager, logging to /opt/modules/hadoop-2.5.0/logs/yarn-root-nodemanager-hadoop.out
[root@hadoop hadoop-2.5.0]# sbin/mr-jobhistory-daemon.sh start historyserver
starting historyserver, logging to /opt/modules/hadoop-2.5.0/logs/mapred-root-historyserver-hadoop.out
[root@hadoop hadoop-2.5.0]#
[root@hadoop hadoop-2.5.0]# jps
31586 JobHistoryServer
30053 ResourceManager
30982 NodeManager
22120 DataNode
32217 Jps
21743 NameNode
## 重新运⾏新的任务
[root@hadoop hadoop-2.5.0]# [root@hadoop hadoop-2.5.0]# bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /usr/root/mapreduce/wordcount/input /usr/root/mapreduce/wordcount/output2查看⽇志聚集
4.8 hadoop 配置⽂件
默认配置⽂件相对应的jar包中
⾃定义配置⽂件 $HADOOP_HOME/etc/hadoop/
4.9 HDFS 垃圾回收
修改 hadoop-2.5.0/etc/l
</property>
<!-- 配置垃圾回收站,表⽰删除的⽂件进⼊垃圾回收站,最长保存时间,以分钟为单位 -->
<property>
<name&ash.interval</name>
<value>10080</value>
<!-- <value>7*24*60</value> -->
</property>
4.10 启动 HDFS 和 YARN ⽅式
启动⽅式
⽅式⼀:各个服务逐⼀启动
# 启动 hdfs
hadoop-daemon.sh start|stop namenode |datanode|secondarynamenode
# 启动 yarn
yarn-daemon.sh start|stop resourcemanager|nodemanager
# 启动 mapreduce
mr-historyserver-daemon.sh start|stop historyserver
⽅式⼆:各个模块分开启动需要配置ssh免密登录
# 启动 hdfs
start-dfs.sh
# 停⽌ hdfs
stop-dfs.sh
# 启动 yarn
start-yarn.sh
# 停⽌ yarn
stop-yarn.sh
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论