大数据相关技术介绍

 

基础:常用算法与数据结构、HTML、CSS、JavaScript

操作系统Linux

编程语言

Java:IO模型、网络编程、多线程、内存管理机制等基础知识|熟悉缓存、消息队列、索引查询|高并发、高负载、高可用系统的设计开发及调优

Java Web项目,SSM等框架,前后台交互

Shell脚本编程:自动化管理操作

Python编程

Scala语言

 

数据库 MySQLOracle等关系型数据库、NoSQL数据库

 MongoDB(文档存储):跨平台、面向文档,将数据存储为一个文档,数据结构由键值对组成,文档类似于json对象

 Cassandra:分布式和分散式/分布式、面向列的存储系统,具有高度可扩展性,可用于管理大量的结构化数据,高可用性,没有单点故障。

 Hbase:分布式列存储数据库

 Redis内存数据库(k-v对存储):内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件,支持多种类型的数据结构

 Alluxio:基于内存的分布式文件系统,是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件,主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。 前身为Tachyon 

 

 应用场景

 计算层需要反复访问远程(比如在云端,或跨机房)的数据;

 计算层需要同时访问多个独立的持久化数据源(比如同时访问S3和HDFS中的数据);

 多个独立的大数据应用(比如不同的Spark Job)需要高速有效的共享数据;

 当计算层有着较为严重的内存资源、以及JVM GC压力,或者较高的任务失败率时,Alluxio作为输入输出数据的Off heap存储可以极大缓解这一压力,并使计算消耗的时间和资源更可控可预测。​

 ​

大数据基础技术

hadoop:HDFS分布式文件系统、MapReduce离线数据处理、YARN资源调用框架

storm:分布式实时大数据处理系统,流数据框架。

kafka:消息中间件,分布式的发布—订阅消息系统。高吞吐量的、持久性的、分布式(ActiveMQ、RabbitMQ)

hbase:建立在Hadoop文件系统之上的分布式列存数据库,提供对数据的随机实时读写。

 表是行的集合。

 行是列族的集合。

 列族是列的集合。

 列是键值对的集合。

hive:使用类sql语言操作hadoop,可转换为MapReduce任务运行。

spark:准实时处理,多数据集(文本数据,图表数据)和数据源(批量数据或实时流数据)core sql streaming mlib(机器学习库)

Zookeeper:分布式协调服务

TEZ引擎:是基于Hadoop YARN之上的DAG(有向无环图,Directed Acyclic Graph)计算框架。核心思想是将Map和Reduce两个操作进一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等。这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的DAG作业,从而可以减少Map/Reduce之间的文件存储,同时合理组合其子过程,也可以减少任务的运行时间

pig:是MapReduce的一个抽象,它是一个工具、平台,用于分析较大的数据集,并将它们表示为数据流。Pig通常与Hadoop一起使用;我们可以使用Pig在Hadoop中执行所有的数据处理操作。要使用 Apache Pig 分析数据,程序员需要使用PigLatin语言编写脚本。所有这些脚本都在内部转换为Map和Reduce任务。Apache Pig有一个名为Pig Engine的组件,它接受Pig Latin脚本作为输入,并将这些脚本转换为MapReduce作业。

kylin:开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,是一个MOLAP系统,主要用于支持大数据生态圈的数据分析业务,主要用过预计算的方式将用户设定的多为立方体缓存倒HBase中。

impala:用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。 它是一个用C++和Java编写的开源软件。与其他SQL引擎(如Hive)相比,用户可以使用SQL查询以更快的方式与HDFS或HBase进行通信。可以读取Hadoop使用的几乎所有文件格式,如Parquet,Avro,RCFile。 与Apache Hive不同,Impala不基于MapReduce算法。它实现了一个基于守护进程的分布式架构,它负责在同一台机器上运行的查询执行的所有方面。因此,它减少了使用MapReduce的延迟,这使Impala比Apache Hive快。

druid:高性能的,分布式列存储的OLAP框架(具体来说是MOLAP)。为大型冷数据集上实时探索查询而设计的开源数据分析和存储系统,提供低延时(实时)的数据接入,灵活的数据探索以及高速的数据聚合(存储和查询)。数据库连接池、JDBC组件(基于Filter-Chain模式的插件体系,DruidDataSource高效可管理的数据库连接池,SQLParser)。

    1.充当数据库连接池。

    2、可以监控数据库访问性能

    3、获得SQL执行日志

    一. 亚秒级查询

        druid提供了快速的聚合能力以及亚秒级的OLAP查询能力,多租户的设计,是面向用户分析应用的理想方式。

    二.实时数据注入

        druid支持流数据的注入,并提供了数据的事件驱动,保证在实时和离线环境下事件的实效性和统一性

    三.可扩展的PB级存储

        druid集群可以很方便的扩容到PB的数据量,每秒百万级别的数据注入。即便在加大数据规模的情况下,也能保证时其效性

    四.多环境部署

        druid既可以运行在商业的硬件上,也可以运行在云上。它可以从多种数据系统中注入数据,包括hadoop,spark,kafka,storm和samza等

oozie(大数据协作框架,任务调度框架):是一个工作流调度系统,用来管理Hadoop任务。工作流调度:工作流程的编排,调度:安排事件的触发执行(时间触发,事件触发),每一个 Oozie Job 都是一个只有 Map Task 的 MapReduce 程序。

hue(大数据协作框架,大数据web工具):开源的Apache Hadoop UI系统。使用Hue我们可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据,运行MapReduce Job,执行Hive的SQL语句,浏览HBase数据库等等。

flume(大数据协作框架:数据收集框架):分布式的日志收集系统,它将各个服务器中的数据收集起来并送到指定的地方。

sqoop(大数据协作框架:数据转换工具):用于hadoop和关系型数据库之间数据导入导出的工具————ETL工具————DataX,阿里的开源ETL工具,Kettle——纯java编写,可以在Window、Linux、Unix上运行

Elastic-Stack:是一系列开源产品的合集,包括 Elasticsearch、Kibana、Logstash 以及 Beats 等等。

 Elasticsearch:分布式的RESTful风格的搜索和实时的分布式搜索分析引擎。是Elastic Stack的核心。被用作全文检索、结构化搜索、分析以及这三个功能的组合。

 Kibana:用于提供日志检索,特定metric展示的模板,方便使用的UI

 Logstash:用于日志结构化,标签化,支持DSL方式将数据结构化

 Beats:轻量级日志采集,支持文件采集,系统数据采集,特定中间件数据采集等。

 x-pack:用于监控和预警相关的组件,可以集成到es中,使用kibana展示

 curator:用于管理ES集群的索引相关的数据,对索引进行分析。​

 

大数据架构思想

Lambda架构:一个能满足大数据系统关键特性的架构,整合离线计算与实时计算,融合不可变性、读写分离和复杂性隔离等原则,可集成Hadoop, Kafka, Spark,Storm等各类大数据组件。 Lambda 架构可分解为三层Layer,即Batch Layer(批处理), Real-Time(Speed,实时处理) Layer和Serving Layer(服务层:数据集整合)。主要面向的场景是逻辑比较复杂同时又希望延迟比较低的异步处理程序,比如搜索引擎、推荐引擎等。

Kappa架构:用流计算系统对全量数据进行重新计算。

 补充技术:爬虫​

 

大数据分析

mlab:基于python的matlab(像python函数库调用matlab)

Matlab:用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境——平台,除了生孩子,什么都能干

R语言:是用于统计分析,图形表示和报告的编程语言和软件环境。R语言的核心是解释计算机语言,其允许分支和循环以及使用函数的模块化编程。R语言是世界上最广泛使用的统计编程语言。​

 

大数据科学家:

微服务架构:是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。

spring boot:1.独立运行的Spring项目2.内嵌Servlet容器3.提供starter简化Maven配置4.自动配置Spring5.准生产的应用监控6.无代码生成和xml配置

spring cloud:分布式/版本化配置、服务注册和发现、路由、服务和服务之间的调用、负载均衡、断路器、分布式消息传递

快速开发:

vue.js:构建用户界面的渐进式框架,实现相应的数据绑定和组合的视图组件

Node.js:一个事件驱动I/O的服务器JavaScript环境

熟悉dockerkubernetes容器技术并有项目实践经验

 

大数据高级应用

数据挖掘:对观测到的数据集(经常是很庞大的)进行分析,目的是发现未知的关系和以数据拥有者可以理解并对其有价值的新颖方式来总结数据。从大型数据库中抽取有意义的(非平凡的,隐含的,以前未知的并且是有潜在价值的)信息或模式的过程。核心是算法

mahout:基于Hadoop的机器学习和数据挖掘的分布式计算框架(MapReduce模式的算法)。为数据分析人员,解决了大数据的门槛;为算法工程师,提供基础的算法库;为Hadoop开发人员,提供了数据建模的标准;为运维人员,打通了和Hadoop连接。数据挖掘三类算法:推荐、聚类、分类

注:数据挖掘只说算法的话属于机器学习,不一样依托于机器学学习,只依托于规则。

1、基于海量数据,利用数据挖掘、机器学习、AI等技术,进行大数据场景下的数据统计、数据挖掘、机器学习、深度学习,包括数据整理、模型建立、模型应用、评估优化等

2、负责分析挖掘客户、行业对大数据产品的需求(应用场景),建立和优化数据分析流程,利用大数据分析结论帮助客户/行业解决实际问题。例如:文本挖掘、用户画像、个性化推荐、风险预测等;

 

必须要了解的九个大数据技术

Hadoop是大数据领域最流行的技术,但也并不是唯一。还有很多其他技术可用于解决大数据问题。除了Apache Hadoop外,另外9个大数据技术也是必须要了解的。

1.Apache Flink

是一个高效、分布式、基于Java实现的通用大数据分析引擎,它具有分布式MapReduce一类平台的高效性、灵活性和扩展性以及并行数据库查询优化方案,它支持批量和基于流的数据分析,且提供了基于Java和Scala的API。

2.Apache Samza

是一个开源、分布式的流处理框架,它使用开源分布式消息处理系统Apache Kafka来实现消息服务,并使用资源管理器Apache Hadoop Yarn实现容错处理、处理器隔离、安全性和资源管理。

该技术由LinkedIn开发,最初目的是为了解决Apache Kafka在扩展能力方面存在的问题,包含诸如Simple API、Managed state、Fault Tolerant、Durable messaging、Scalable、Extensible,以及Processor Isolation等功能。

3.Cloud Dataflow

Dataflow是一种原生的Google Cloud数据处理服务,是一种构建、管理和优化复杂数据流水线的方法,用于构建移动应用,调试、追踪和监控产品级云应用。它采用了Google内部的技术Flume和MillWhell,其中Flume用于数据的高效并行化处理,而MillWhell则用于互联网级别的带有很好容错机制的流处理。

该技术提供了简单的编程模型,可用于批处理和流式数据的处理任务。该技术提供的数据流管理服务可控制数据处理作业的执行,数据处理作业可使用Data Flow SDK(Apache Beam)创建。

4.StreamSets

StreamSets是一种专门针对传输中数据进行过优化的数据处理平台,提供了可视化数据流创建模型,通过开源的方式发行。该技术可部署在内部环境或云中,提供了丰富的监视和管理界面。

数据收集器可使用数据管线实时地流式传输并处理数据,管线描述了数据从源头到最终目标的流动方式,可包含来源、目标,以及处理程序。数据收集器的生命周期可通过管理控制台进行控制。

5.TensorFlow

是继DistBelief之后的第二代机器学习系统。TensorFlow源自Google旗下的Google Brain项目,主要目标在于为Google全公司的不同产品和服务应用各种类型的神经网络机器学习能力。

支持分布式计算的TensorFlow能够使用户在自己的机器学习基础结构中训练分布式模型。该系统以高性能的gRPC数据库为支撑,与最近发布的Google云机器学习系统互补,使用户能够利用Google云平台,对TensorFlow模型进行训练并提供服务。

这是一种开源软件库,可使用数据流图谱(data flow graph)进行数值运算,这种技术已被包括DeepDream、RankBrain、Smart Replyused在内的各种Google项目所使用

6.Druid

Druid是一个用于大数据实时查询和分析的高容错、高性能开源分布式系统,旨在快速处理大规模的数据,并能够实现快速查询和分析,诞生于2011年,包含诸如驱动交互式数据应用程序,多租户:大量并发用户,扩展能力:每天上万亿事件,次秒级查询,实时分析等功能。Druid还包含一些特殊的重要功能,例如低延迟数据摄入、快速聚合、任意切割能力、高可用性、近似计算与精确计算等。

7.Apache NiFi

Apache NiFi是一套强大可靠的数据处理和分发系统,可用于对数据的流转和转换创建有向图。借助该系统可以用图形界面创建、监视、控制数据流,有丰富的配置选项可供使用,可在运行时修改数据流,动态创建数据分区。此外还可以对数据在整个系统内的流动进行数据起源跟踪。通过开发自定义组件,还可轻松对其进行扩展。

8.LinkedIn WhereHows

WhereHows提供带元数据搜索的企业编录(Enterprise catalog),可以让您了解数据存储在哪里,是如何保存到那里的。该工具可提供协作、数据血统分析等功能,并可连接至多种数据源和提取、加载和转换(ETL)工具。该工具为数据发现提供了Web界面,支持API的后端服务器负责控制元数据的爬网(Crawling)以及与其他系统的集成。

9.Microsoft Cognitive Services

该技术源自Project Oxford和Bing,提供了22种认知计算API,主要分类包括:视觉、语音、语言、知识,以及搜索。该技术已集成于Cortana Intelligence Suite。这是一种开源技术,提供了22种不同的认知计算REST API,并为开发者提供了适用于Windows、IOS、Android以及Python的SDK。

 

上述如果有错误,请联系微信:下课铃声,会在第一时间更改!

大数据相关技术介绍_第1张图片

 

你可能感兴趣的:(大数据笔记,项目经验)