1.1 什么是hadoop
1、hadoop是apache旗下一套开源软件平台。
2、hadoop提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理。
3、hadoop的核心组件有:
A、Common(基础组件)
B、HDFS(分布式文件系统)
C、YARN(运算支援调度系统)
D、MAPREDUCE(分布式运算编程框架)
4、广义上来说,hadoop通常是指一个更广泛的概念-------------hadoop生态圈
1.2 hadoop的产生背景
1、hadoop最早起源于nutch,nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着
抓取网页数量的增加,遇到了严重的可扩展性问题------如何解决数十亿网页的存储和索引问题。
2、2003、2004股沟发表三篇论文为该问题提供了可行性的解决方案。
------分布式文件系统GFS,可用于处理海量网页的存储
------分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。
------分布式数据库BigTable Apache开源版本Hbase,一张表可以存储上billons行,milions列
3、Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从nutch中剥离成为独立的项目HADOOP,到2008.1月
hadoop成为apache顶级项目,迎来了快速发展期。
1.3 hadoop在大数据和云计算当中的位置和关系
1、云计算是分布式计算、并行计算、网格计算、多核计算、网络存储、虚拟化、负载均衡等传统计算机技术和互联网技术融合的发展产物。
借助laaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等业务模式,把强大的计算能力提供给终端用户。
2、现阶段,云计算的量大底层支撑技术为"虚拟化"和"大数据技术"。虚拟化:Docker、OpenStack
3、而hadoop则是云计算的PaaS层的解决方案之一,并不等同于Paas,更不等同于云计算本身。
1.4 hadoop技术应用架构概览
1.4.1 hadoop应用于数据服务基础平台建设
1.4.2 hadoop用户用户画像
金融行业:个人征信分析
证券行业:投资模型分析
交通行业:车辆、路况监控分析
电信行业:用户上网行为分析
电商行业:用户浏览、购买行为分析
...
最后总结:hadoop并不会跟某个具体的行业或者某个具体的业务挂钩,它只是用来做海量数据分析处理的工具
1.5 hadoop生态圈以及各组成部分的简介
重点组件:
HDFS:分布式文件系统
MapREduce:分布式程序运算框架,也可以叫做一种编程模型
Hive:基于hadoop的类SQL数据仓库工具
HBASE:基于hadoop的列式分布式数据库
Zookeeper:分布式协调服务组件
Mahout:基于MapReduce/Flink/Spark等分布式运算框架的机器学习算法库
Oozie/Azkaban:工作流调度引擎
Sqoop:数据迁入迁出工具
Flume:日志采集工具
1.6 hadoop技能要求
大数据是个复核专业,包括应用开发、软件平台、算法、数据挖掘等,因此大数据技术领域的就业选择是多样的,
但就hadoop而言,通常都需要具备以下技能或知识:
A、hadoop分布式集群的平台搭建
B、hadoop分布式文件系统hdfs的原理理解及使用
C、hadoop分布式运算框架mapreduce的原理理解及编程
D、hive数据仓库工具的熟练应用
E、flume、sqoop、oozie等辅助工具的熟练使用
F、shell/python等脚本语言的开发能力
分布式系统概述
ps:由于大数据技术领域的各类技术框架基本上都是分布式系统,因此理解hadoop、storm、spark等技术框架,
都需要具备基本的分布式系统概念。
A、集群 + 负载均衡
B、分布式:
1、该软件系统会划分成多个子系统或模块,各自运行在不同的机器上,子系统或模块之间通过网络通信进行协作,
实现最终的整体功能。
2、比如分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。
总结:利用多个节点共同协作完成一项或多项具体业务功能的系统就是分布式系统。
离线分析系统结构概述
需求分析:
1、案例名称:XX网/XX app点击流日志数据挖掘系统。
2、案例需求描述:“WEB点击流日志”包含着网站运营很重要的信息,通过日志分析,我们可以知道网站的访问量,
哪个网页访问人数最多,哪个网页最后价值,广告转化率、访客的来源信息,访客的终端信息等。
3、数据来源:本案例的数据主要由用户的点击行为记录。
4、获取方式:在页面预埋一段js程序,为页面上想要监听的标签绑定事件,只要用户点击或移动到标签,
即可触发ajax请求到后台servlet程序,用log4j记录下事件信息,从而在web服务器(nginx、tomcat等)
上形成不断增长的日志文件。
5、数据处理流程
数据采集--->数据预处理--->导入Hive库--->ETL--->报表统计--->结果导出到mysql--->数据可视化
A、数据采集:定制开发采集程序,或使用开源框架flume
B、数据预处理:定制开发mapreduce程序运行于hadoop群
C、数据仓库技术:基于hadoop之上的hive
D、数据导出:基于hadoop的sqoop数据导入导出工具
E、数据可视化:定制开发web程序或使用kettle等产品 echart
F、整个过程的流程调度:hadoop生态圈中的oozie/azkaban 工具或其他类似开源产品