大数据相关知识入门

来源:互联网 发布:隆多臂展体测数据 编辑:程序博客网 时间:2024/05/20 05:06

大数据相关入门的介绍:

           在后台常用到数据的加工合并连接等操作形成新的表,里面会对应你想要的数据(维度等信息),在前台可以使用,一个月内的情况,近7天得情况等统计分析 1.最初你可能想通过web端用Java写计算公式得出结果(会发现很慢)---》2.后期你方发现直接写一些脚本(linux或者oracle等等各种形式的脚本,让他定时执行或调用存在表中,前端的系统直接取结果(基本是正确的思想,但是发现数据量太大,计算总是差强人意的,也许承受不住压力或者时间太长,多几个请求就完蛋了)-----》3.接着就是分布式的出现----》4.最后就是Hadoop的出现,Hadoop不仅能分布式、扩容、对机器的要求低,容错等等机制完美的解决了最初的需求,后来发现不行我想实时的出现结果,例如某个人的触发了某个操作,我要立刻处理,而不要等到第二天,又或者我浏览了某些商品,新闻,某类音乐,能立刻有相关的推荐等--》解决这种情景就需要实时处理(storm),或者微批处理(spark Streaming)

关于数据的采集:

  所有我们认为存储在数据库里面的数据,结构其实最终都是以文件的形式存储的

SparkHadoop的所有计算都是基于hdfs(存储数据文件)计算的,同样所有要进行处理的数据文件最终都要导入到hdfs文件中(相当于统一货币,统一处理格式),那么统一的过程就涉及到 数据在哪的问题!

   如果数据存储在文件中的例如log日志,可以读取相关的文件形成hdfs的文件,读取的过程又有可能是远程的,你可以cp的形式拷贝,但是可能出现卡机等一切意外,导致文件的丢失,另外多长时间拷贝一次,文件过大等问题,其实文件的读取flum可以做实时读取(分布式,扩容,容错,实时),还有其他的方式。

   如果数据存储在数据库中可以通过sqoop等相关的插件将数据转换成hive或者hbase识别的数据形式存储在hdfs,再进行操作。

关于数据的操作:

       直接操作文件,sparkhadoop都能直接操作,按行读取做操作,再结合一下算法(例如最常见的推荐算法,就用到矩阵的点乘等)

      也可以以数据命令的形式做操作,例如hive他就是设置读取hdfs文件的形式,将读取的格式保存起来(叫表结构),数据存在hdfs但是我有了读取hdfs文件的方式(表结构),那么就可以以类似的sql的命令来操作hdfs的文件了,你可以建新表、连接、增删改查等操作,所有的操作都是有强大的hadoop等做支持是很快的。

关于数据的存储:

     数据操作完了,你可以存储成文件,或者存储在前端先要用的数据库中(hbasemysqloracleES等等),sqoop(转换工具,可以对接各种数据库,将数据读到非关系型数据库存在hdfs中,也可以将hdfs的数据读到各种关系型数据库)

   数据存储完,前端使用就可以了。根据不用的场景使用批处理或者实时处理。

各个插件都是干嘛的?

1. Hadoop

   用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算。

  设计核心:     Mapreduce编程模型(提供了对数据的计算),HDFS分布式文件存储(提供了海量数据的存储。多备份),与YARN。

YARN:资源管理系统,包含一个全局的资源调度器ResourceManager和每个应用程序特有的应用程序管理器ApplicationMaster

2. Spark&storm

3. Hive

          Hive是构建在Hadoop上的数据仓库平台,设计目标是可以用传统SQL操作Hadoop上的数据,数据存储在hdfs上,利用Hadoop MapReduce来处理hive的命令,类似mysql和oracle等关系型数据库的操作方式

4. Hbase

    高可靠、高性能、面向列、可伸缩的分布式存储系统,数据存储在hdfs上,利用Hadoop MapReduce来处理HBase中的海量数据

特点:大,面向列,稀疏(空列不占用空间),操作不像hive,但支持shell命令的形式以及Javaapi,支持的查询比较简单

 但是支持大数据量高并发操作

5. Sqoop

          Sqoop是数据库ETL工具,用于将关系型数据库的数据导入到 Hadoop 及其相关的系统中,如 Hive和HBase。Sqoop 的核心设计思想是利用MapReduce 加快数据传输速度也就是说 Sqoop 的导入和导出功能是通过 MapReduce 作业实现的,所以它是一种批处理方式进行数据传输,难以实现实时数据的导入和导出。

6. Sparksql

7. Sparkstreaming

8. Flume

         Flume是高可用的,高可靠的,分布式的海量日志采集、 聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。(传输的方向都是通过配置文件设置)

  Flume就是一个数据管道,支持很多源(source),channel,sink(目标)

9. Kafka

分布式发布订阅消息系统,我的理解就是可以存储消息的仓库减轻传递和接收方的压力

    Broker:存储消息的地方

    Topic:相当于消息的类别存储在broker  举一个不太恰当的例子,如果broker相当于map 那么topic相当于key,而实际的消息相当于value

    Partition:Partition是物理上的概念,每个Topic包含一个或多个Partition.

   Producer:负责发布消息到Kafka broker,必然是需要指定主题的

    Consumer:消息消费者,向Kafka broker读取消息的客户端。同样需要指定需要哪个主题

   Consumer Group:每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。

10. zookeeper

高可用、高性能且一致的开源协调服务,分布式的,开放源码的分布式应用程序协调服务

ZooKeeper的基本运转流程:
1、选举Leader。
2、同步数据。
3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。
4、Leader要具有最高的执行ID,类似root权限。
5、集群中大多数的机器得到响应并接受选出的Leader。
为了保证容错性,某个主节点挂掉,能快速恢复管理的机制

11. 最主要的后台测试工具postMan

原创粉丝点击