hadoop是apache旗下开源软件平台
提供服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理
hadoop核心组件有:
HDFS :分布式文件系统Hadoop distributed filesystem
YARN 运算资源调度系统
MapReduce 分布式运算编程框架
广义上说,hadoop是指一个更广泛的概念,hadoop生态圈
产生背景
hadoop最早起源Nutch,它的设计目标是构建一个大型的全网搜索引擎,包括网页抓取,索引,查询等功能,但由于庞大的数据量,上亿级的,遇到了可扩展性问题
2003,04年谷歌发表了两篇论文成为可行性解决方案
-- 分布式文件系统(GFS) 用于处理海量网页存储
-- 分布式计算框架mapreduce 用于处理海量网页的索引计算问题
Nutch开发人员完成了相应的开源实现HDFS和mapreduce,并从Nutch中剥离成为独立项目HADOOP
直到2008年1月 hadoop成为Apache顶级项目,迎来了它的快速发展。
hadoop的出现,解决了需要大量计算的瓶颈,例如机器学习,人工智能,在单机时代,他们受限于庞大的计算。
hadoop在大数据,云计算中的位置和关系
云计算是分布式计算,并行计算,网格计算,多核计算,网络存储,虚拟化,负载均衡等传统计算机技术的互联网技术的融合。借助laaS(Infrastructure基础设施即服务),PaaS(Platform平台即服务),SaaS(software软件即服务)等业务,将强大的计算能力提供给终端用户.
云计算的两大底层技术:“虚拟化”,“大数据技术”
大数据则是云计算的PaaS层解决方案之一
Hadoop生态圈 你需要了解
hadoop 分布式集群平台搭建
分布式文件系统HDFS的原理理解及使用
分布式运算框架mapreduce的原理理解及编程
Hive 基于大数据技术(文件+运算框架)的SQL数据仓库工具
HBASE 基于hadoop的分布式海量数据库
Mahout : 基于mapreduce/spark,flink等分布式运算框架的机器学习算法库
Oozie : 工作流调度框架
Sqoop:数据导入导出工具
Flume:日志数据采集框架
Shell/python等脚本语言的开发能力
Zookeeper: 分布式协调服务基础组件
hadoop成功运用于网站日志分析,用户画像等。。
分布式应用系统基本是 利用多节点共同协作完成一项或多项具体业务功能的系统
hadoop集群搭建
hadoop集群的搭建包括两个集群,HDFS集群,YARN集群,两者逻辑上分离,物理上常连在一起
HDFS集群:负责海量数据的存储,集群中角色主要有NameNode/DataNode。由一个NameNode和多个DataNode组成,namenode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作,datanode管理存储数据。
YARN集群:负责海量数据运算时的资源调度,集群总的角色主要有ResouceManager/NodeManager(mapreduce其实是一个应用程序开发包)
mapreduce框架是由一个单独运行在主节点上的jobTracker和运行在每个从节点的taskTracker共同组成的,主节点负责调度构成一个作业的所有任务,这些任务分布在不同从节点上,主节点监控他们的执行情况并重新分发上一个失败的任务。hdfs和mapreduce共同组成了hadoop分布式系统体系结构的核心,hdfs在集群上实现分布式文件系统,mapreduce在集群上实现了分布式计算和任务处理。在hdfs基础上实现了任务的分发,跟踪,执行等工作。并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。