新闻| 文章| 资讯| 行情| 企业| wap手机版| article文章| 首页|会员中心|保存桌面|手机浏览
普通会员

易达信息科技

企业列表
新闻列表
推荐企业新闻
联系方式
  • 联系人:依依
友情链接
  • 暂无链接
首页 > 新闻中心 > 大数据相关知识点
新闻中心
大数据相关知识点
发布时间:2024-11-27        浏览次数:8        返回列表

hadoop是一个开源项目,所以很多公司在这个基础进行商业化,Cloudera对hadoop做了相应的改变。

大数据相关知识点

Cloudera公司的发行版,我们将该版本称为CDH(Cloudera Distribution Hadoop)。

概念:Apache Hadoop是一个开源的、可靠的、可扩展的分布式计算框架

  • 可扩展性:大量的普通计算机组成
  • 可靠性:不依赖超级计算机的硬件提供可靠性,靠普通计算机在应用层上保障

  • 2003-2004 的三篇论文
    • GFS:分布式文件系统,演变成HDFS
    • MapReduce:分布式计算框架(Java语言实现,开源
      • 特点:扩展性&容错性&海量数据离线处理
    • BigTable:大型数据库,后续演变成Hbase
    • 大数据计算都只是数数,简单的排序等;不能做复杂的操作 一般的文件用open函数打开也能统计,但大数据量文件要用MapReduce操作

  • 09年Cloudera推出CDH(Cloudera’s Dsitribution Including Apache Hadoop) ---- 目前大部分都用CDH,因为其稳定、加入许多新功能,如包含了Apache Hadoop。
  • 2018年4月发展到了 ----Apache Hadoop 3.1 Available,目前是3.x系列国内目前用的广的为2.5、2.6、2.7
  • 18、19年Hadoop对1TB的数据进行排序最快在几秒或者十几秒的时间,有自身瓶颈,分布式的原因
  • Hadoop出现的原因
    • 搜索引擎时代
      • 有保存大量网页的需求(单机、集群
      • 词频统计 word count PageRank
  • 数据仓库时代
    • FaceBook推出Hive
    • 曾经进行数据分析和统计时,仅限于数据库,受数据量和计算能力的限制,我们只能对最重要的数据进行统计和分析(决策数据、财务相关
    • Hive可以在Hadoop上运行SQL操作,可以把运行日志,应用采集数据、数据库数据放到一起分析(但是跑起来速度不会太快,但比在hadoop编码容易得多
  • 数据挖掘时代
    • 啤酒尿不湿
    • 关联分析
    • 用户画像/物品画像
  • 机器学习时代–广义大数据
    • 大数据提高数据存储能力,为机器学习提供燃料
    • alpha go
    • siri 小爱 天猫精灵
  • Hadoop Common:核心引擎(偏底层,不必深究
  • HDFS(分布式文件系统:分布式存储作用是文件存储
    • 文件数据切块,每一个block 128MB(太大太小不合适,128MB比较符合
    • 任意数据块默认3备份
    • NameNode(一般3台机器至少,存总体数据索引表+ DataNode(会有几千台机器做,存数据节点
    • HDFS是GFS的开源实现
    • 特点:扩展性&容错性&海量数据存储(其它组件特点都是这三个在这里插入图片描述
  • Hadoop YARN(资源调度系统
    • 负责整个集群资源的管理和调度
    • YARN特点:扩展性&容错性&多框架资源统一调度
    • Hadoop1.x时代没有YARN,2.x时代才有,因为其它框架如Pig、Hive、Hbase等都用HDFS做底层存储系统,所以用YARN统一调度。
    • YARN防止多进程同时写一个文件,但同时读文件可以

Hadoop优势

  • 高可靠:考数据的多副本,以及计算节点崩溃后,框架保证重新调度计算
  • 高可扩展:普通计算机进行扩展,比较廉价
  • Hadoop生态系统成熟Apache基金会支持,用的人多,社区服务好,遇问题解决方便
    • hadoop是容器,机器学习是门学问,python是语言,机器学习相关算法可以用python写,写好后在hadoop搭建的集群上面运行,机器学习统计计算,三者是相辅相成的
    • Hadoop是由Java编写的可以说所有的大数据模块都是用java写的;Hadoop的创始人是Doug Cutting, 同时也是著名的基于Java的检索引擎库Apache Lucene的创始人

linux系统中文件的颜色表示

  • 红色文件 ———– 压缩文件或者包文件
  • 蓝色文件 ———- 目录
  • 白色文件(或黑色)———- 一般性文件,如文本文件,配置文件,源码文件等
  • 浅蓝色文件 ———- 链接文件,主要是使用ln命令建立的文件
  • 注意:官网下载时,会下载source源码包、目录方式的包以及tar.gz压缩包,尽量选中目录方式的,因为可以直接拿来用 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 NameNode是基础核心,挂掉后其它组件如Pig、Spark都不能使用
  • Jps常用命令整理:jps(JavaVirtualMachineProcessStatusTool)是JDK1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前运行的java进程 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 注意:这里的mv只能在虚拟机本身的linux系统或者hdfs本身系统上去移动文件,不能跨两者移动文件,可以用put命令把linux系统的文件移动到hdfs系统上,get可以从hdfs系统上下载文件到linux系统 -HDFS的常用命令
    • 启动:https://blog.csdn.net/qq_42690811/article/details/start-dfs.sh
    • jps查看进程
    • hadoop fs -ls /dir
    • hadoop fs -cat
    • hadoop fs -put
    • hadoop fs -mv
    • hadoop fs -mkdir
    • hadoop fs -rmr 在这里插入图片描述 设计思路:在大量的廉价机器上进行部署,依靠3备份+应用层提供高可靠的访问服务
  • 最低的集群需要4台集群,一个NameNode,三个DataNodes
  • HDFS架构
    • NameNode:存储元数据,10分钟收不到心跳信息,默认为DataNode挂掉
    • DataNode:存储真实数据,定期发送心跳信息
    • 优点:容错,构建在廉价机器上
    • 缺点:高延迟,不适合小文件(blodk每一块都要占用128MB) 在这里插入图片描述 在这里插入图片描述
 
  • YARN的工作原理和流程
    • YARN产生于Hadoop2.x时代,主要用来协调不同的计算框架(如Pig、Spark等
    • 更好的利用集群,让不同的框架可以并行的访问HDFS资源
    • ResourceManager:有且仅有一个,总体的资源协调者
    • NodeManager:节点管理器,收到RM命令并启动Container
    • Container:一个封装的抽象,可以理解为一个小型计算机
    • 好处:Yet Another Resource Negotiator, 另一种资源协调者 通用资源管理系统 为上层应用提供统一的资源管理和调度,为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处 在这里插入图片描述 在这里插入图片描述在这里插入图片描述
  1. 什么是MapReduce
    • 源于Google的MapReduce论文(2004年12月)
    • Hadoop的MapReduce是Google论文的开源实现
    • MapReduce优点:海量数据离线处理&易开发
    • MapReduce缺点:实时流式计算
  2. MapReduce编程模型 在这里插入图片描述 在这里插入图片描述
  3. Hadoop Streaming实现wordcount
 
  • cat xxx.txt|python3 map.py|sort|python3 red.py

  • 得到最终的输出

  • :hadoop-streaming会主动将map的输出数据进行字典排序

在这里插入图片描述

 

sh hadoop-streaming.sh运行任务 到Hadoop集群查看运行结果—如命令hadoop fs -cat /tmp/output/20190518/prat-00000

 
 
  • MapReduce执行流程
    • 第一步:数据从HDFS上面分块并进行data split
    • 第二步:执行mapper函数,用户自定义逻辑
    • 第三步:mapper的结果不停的写缓冲区,达到80%开始执行spill溢写操作,溢写到磁盘上
    • 第四步:归并排序
    • 第五步:外部文件的合并,merge操作,是在多台机器之间进行
    • 第六步:执行reducer函数,用户自定义逻辑 在这里插入图片描述
  • hadoop集群最大是15000台机器工作 在这里插入图片描述
 

######################Hadoop生态系统的特点#####################

  • 开源、社区活跃
  • 囊括了大数据处理的方方面面
  • 成熟的生态圈
  • Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的软件。

  • Flume 的核心是把数据从数据源(source)收集过来,再将收集到的数据送到指定的目的地(sink)。为了保证输送的过程一定成功,在送到目的地(sink)之前,会先缓存数据(channel),待数据真正到达目的地(sink)后,flume 在删除自己缓存的数据。

  • Flume 支持定制各类数据发送方,用于收集各类型数据;同时,Flume 支持定制各种数据接收方,用于最终存储数据。一般的采集需求,通过对 flume 的简单配置即可实现。针对特殊场景也具备良好的自定义扩展能力。因此,flume 可以适用于大部分的日常数据采集场景。

  • 下图保证结尾的cdh版本一致即可对应使用 在这里插入图片描述

  • Flume发展史

    • 当前 Flume 有两个版本。Flume 0.9X 版本的统称 Flume OG(original generation,Flume1.X 版本的统称 Flume NG(Flume-728)(next generation)。由于 Flume NG 经过核心组件、核心配置以及代码架构重构,与 Flume OG 有很大不同,使用时请注意区分。改动的另一原因是将 Flume 纳入 apache 旗下,Cloudera Flume 改名为 Apache Flume。
  • 概念:基于内存的计算引擎,它的计算速度非常快。但是仅仅只涉及数据的计算,并没有涉及数据的储存。
  • Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎
  • 为什么学习spark
    • MapReduce框架局限性
      • Map结果写磁盘,Reduce写HDFS,多个MR之间通过HDFS交换数据
      • 任务调度和启动开销大
      • 无法充分利用内存
      • 不适合迭代计算(如机器学习、图计算等等,交换式处理(数据挖掘
      • 不适合流式处理(点击日志分析
      • MapReduce变成不够灵活,仅支持Map和Reduce两种操作 Hadoop生态圈
  • 批处理:MapReduce、Hive、Pig
  • 流式计算:Storm
  • 交互式计算:Impala、presto
  • 需要一种灵活的框架可同时进行批处理、流式计算、交互式计算— Spark
 
  • 任意一个框架都有自身特殊的数据结构
  • RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,他代表一个不可变、可分区、里面的元素可并行计算的集合。

Spark SQL

  • 它是spark中用于处理结构化数据的一个模块
  • 为什么要学习sparksql
  • sparksql特性 1、易整合 2、统一的数据源访问 3、兼容hive 4、提供了标准的数据库连接(jdbc/odbc

Kafka 是一种高吞吐量 [2] 的分布式发布订阅消息系统,有如下特性: 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。 高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。 支持通过Kafka服务器和消费机集群来分区消息。 支持Hadoop并行数据加载。 Kafka通过官网发布了最新版本2.5.0

Kafka三代 - Broker集群 很明显,为了解决高可用问题,我们需要集群。

Kafka对集群的支持也是非常友好的。在Kafka中,集群里的每个实例叫做Broker,就像这样在这里插入图片描述 每个partition不再只有一个,而是有一个leader(红色)和多个replica(蓝色),生产者根据消息的topic和key值,确定了消息要发往哪个partition之后(假设是p1,会找到partition对应的leader(也就是broker2里的p1),然后将消息发给leader,leader负责消息的写入,并与其余的replica进行同步。

一旦某一个partition的leader挂掉了,那么只需提拔一个replica出来,让它成为leader就ok了,系统依旧可以正常运行。

通过Broker集群的设计,我们不仅解决了系统高可用的问题,还进一步提升了系统的吞吐量,因为replica同样可以为消费者提供数据查找的功能。