基础:
常用算法与数据结构
HTML、CSS与JavaScript
操作系统:
Linux
编程语言:
- Java:IO模型、网络编程、多线程、内存管理机制等基础知识|熟悉缓存、消息队列、索引查询|高并发、高负载、高可用系统的设计开发及调优
- Java Web项目,SSM等框架,前后台交互
- Shell脚本编程:自动化管理操作
- Python编程
- Scala语言学习大数据加q群805127855
数据库:
- MySQL、Oracle等关系型数据库
- 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文件系统之上的分布式列存数据库,提供对数据的随机实时读写。
- 表是行的集合。
- 行是列族的集合。
- 列族是列的集合。
- 列是键值对的集合。
- 学习大数据加q群805127855
- 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 程序。
- 学习大数据加q群805127855
- 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)学习大数据加q群805127855
- 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环境
熟悉docker、kubernetes容器技术并有项目实践经验
用户画像、推荐系统
大数据高级应用
数据挖掘:对观测到的数据集(经常是很庞大的)进行分析,目的是发现未知的关系和以数据拥有者可以理解并对其有价值的新颖方式来总结数据。从大型数据库中抽取有意义的(非平凡的,隐含的,以前未知的并且是有潜在价值的)信息或模式的过程。核心是算法学习大数据加q群805127855
mahout:基于Hadoop的机器学习和数据挖掘的分布式计算框架(MapReduce模式的算法)。为数据分析人员,解决了大数据的门槛;为算法工程师,提供基础的算法库;为Hadoop开发人员,提供了数据建模的标准;为运维人员,打通了和Hadoop连接。数据挖掘三类算法:推荐、聚类、分类
注:数据挖掘只说算法的话属于机器学习,不一样依托于机器学学习,只依托于规则。
1、基于海量数据,利用数据挖掘、机器学习、AI等技术,进行大数据场景下的数据统计、数据挖掘、机器学习、深度学习,包括数据整理、模型建立、模型应用、评估优化等
2、负责分析挖掘客户、行业对大数据产品的需求(应用场景),建立和优化数据分析流程,利用大数据分析结论帮助客户/行业解决实际问题。例如:文本挖掘、用户画像、个性化推荐、风险预测等;
大数据方向:
01.大数据工程师
02.数据分析师
03.大数据科学家
04.其他(数据挖掘本质算是机器学习,不过和数据相关,也可以理解为大数据的一个方向吧)
学习大数据加q群805127855