大数据是对海量数据进行存储、计算、统计、分析处理的一系列处理手段,处理的数据量通常是TB级,甚至是PB或EB级的数据,这是传统数据处理手段所无法完成的,其涉及的技术有分布式计算、高并发处理、高可用处理、集群、实时性计算等,汇集了当前IT领域热门流行的IT技术。
系统的学习知识点我
大数据入门,需要学习以下这些知识点:
先附上一张自己总结的学习线路图
1、Java编程技术
Java编程技术是大数据学习的基础,Java是一种强类型语言,拥有极高的跨平台能力,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等,是大数据工程师最喜欢的编程工具,因此,想学好大数据,掌握Java基础是必不可少的。
2、Linux命令
对于大数据开发通常是在Linux环境下进行的,相比Linux操作系统,Windows操作系统是封闭的操作系统,开源的大数据软件很受限制,因此,想从事大数据开发相关工作,还需掌握Linux基础操作命令。
3、Hadoop
Hadoop是大数据开发的重要框架,其核心是HDFS和MapReduce,HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算,因此,需要重点掌握,除此之外,还需要掌握Hadoop集群、Hadoop集群管理、YARN以及Hadoop高级管理等相关技术与操作!
4、Hive
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行,十分适合数据仓库的统计分析。对于Hive需掌握其安装、应用及高级操作等。
5、Avro与Protobuf
Avro与Protobuf均是数据序列化系统,可以提供丰富的数据结构类型,十分适合做数据存储,还可进行不同语言之间相互通信的数据交换格式,学习大数据,需掌握其具体用法。
6、ZooKeeper
ZooKeeper是Hadoop和Hbase的重要组件,是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组件服务等,在大数据开发中要掌握ZooKeeper的常用命令及功能的实现方法。
7、HBase
HBase是一个分布式的、面向列的开源数据库,它不同于一般的关系数据库,更适合于非结构化数据存储的数据库,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,大数据开发需掌握HBase基础知识、应用、架构以及高级用法等。
8、phoenix
phoenix是用Java编写的基于JDBC API操作HBase的开源SQL引擎,其具有动态列、散列加载、查询服务器、追踪、事务、用户自定义函数、二级索引、命名空间映射、数据收集、行时间戳列、分页查询、跳跃查询、视图以及多租户的特性,大数据开发需掌握其原理和使用方法。
9、Redis
Redis是一个key-value存储系统,其出现很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用,它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便,大数据开发需掌握Redis的安装、配置及相关使用方法。
10、Flume
Flume是一款高可用、高可靠、分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。大数据开发需掌握其安装、配置以及相关使用方法。
11、SSM
SSM框架是由Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。大数据开发需分别掌握Spring、SpringMVC、MyBatis三种框架的同时,再使用SSM进行整合操作。
12、Kafka
Kafka是一种高吞吐量的分布式发布订阅消息系统,其在大数据开发应用上的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。大数据开发需掌握Kafka架构原理及各组件的作用和使用方法及相关功能的实现。
13、Scala
Scala是一门多范式的编程语言,大数据开发重要框架Spark是采用Scala语言设计的,想要学好Spark框架,拥有Scala基础是必不可少的,因此,大数据开发需掌握Scala编程基础知识!
14、Spark
Spark是专为大规模数据处理而设计的快速通用的计算引擎,其提供了一个全面、统一的框架用于管理各种不同性质的数据集和数据源的大数据处理的需求,大数据开发需掌握Spark基础、SparkJob、Spark RDD、spark job部署与资源分配、Spark shuffle、Spark内存管理、Spark广播变量、Spark SQL、Spark Streaming以及Spark ML等相关知识。
15、Azkaban
Azkaban是一个批量工作流任务调度器,可用于在一个工作流内以一个特定的顺序运行一组工作和流程,可以利用Azkaban来完成大数据的任务调度,大数据开发需掌握Azkaban的相关配置及语法规则。
16、Python与数据分析
Python是面向对象的编程语言,拥有丰富的库,使用简单,应用广泛,在大数据领域也有所应用,主要可用于数据采集、数据分析以及数据可视化等,因此,大数据开发需学习一定的Python知识。
一、入门准备
1、linux操作基础
1) Linux的介绍,Linux的安装:VMware Workstation虚拟软件安装过程、CentOS虚拟机安装过程
2) Linux的常用命令:常用命令的介绍、常用命令的使用和练习(文件操作、用户管理与权限、免密登陆配置与网络管理)
3) Linux系统进程管理基本原理及相关管理工具如ps、pkill、top、htop等的使用;
4) Linux启动流程,运行级别详解,chkconfig详解
5) VI、VIM编辑器:VI、VIM编辑器的介绍、VI、VIM扥使用和常用快捷键
6) Linux磁盘管理,lvm逻辑卷,nfs详解
7) Linux系统文件权限管理:文件权限介绍、文件权限的操作
8) Linux的RPM软件包管理:RPM包的介绍、RPM安装、卸载等操作
9) yum命令,yum源搭建
10) Linux网络:Linux网络的介绍、Linux网络的配置和维护 防火墙配置
11) Shell编程:Shell的介绍、Shell脚本的编写
12) Linux上常见软件的安装:安装JDK、安装Tomcat、安装mysql,web项目部署
13)linux高级文本处理命令cut、sed、awklinux
14)定时任务crontab
2、大型网站高并发处理
1) 第四层负载均衡
a) Lvs负载均衡 i. 负载算法,NAT模式,直接路由模式(DR),隧道模式(TUN)
b) F5负载均衡器介绍
2) 第七层负载均衡
a) Nginx b) Apache
3) Tomcat、jvm优化提高并发量
4) 缓存优化
a) Java缓存框架 i. Oscache,ehcache
b) 缓存数据库 i. Redis,Memcached
5) Lvs+nginx+tomcat+redis|memcache构建二层负载均衡千万并发处理
6) Haproxy
7) Fastdfs小文件独立存储管理
8) Redis缓存系统 a) Redis基本使用 b) Redis sentinel高可用 c) Redis好友推荐算法
3、Lucene基础
1) Lucene介绍
2) Lucene 倒排索引原理
3) 建索引 IndexWriter
4) 搜索 IndexSearcher
5) Query
6) Sort和 过滤 (filter)
7) 索引优化和高亮
4、solr基础
1) 什么是solr
2) 为什么工程中要使用solr
3) Solr的原理
4) 如何在tomcat中运行solr
5) 如何利用solr进行索引与搜索
6) solr的各种查询
7) solr的Filter
8) solr的排序
9) solr的高亮
10) solr的某个域统计
11) solr的范围统计
12) solrcloud集群搭建
5、布式协调服务zookeeper
zookeeper简介及应用场景
zookeeper集群安装部署
zookeeper的数据节点与命令行操作
zookeeper的java客户端基本操作及事件监听
zookeeper核心机制及数据节点
zookeeper应用案例–分布式共享资源锁
zookeeper应用案例–服务器上下线动态感知
zookeeper的数据一致性原理及leader选举机制
6、java高级特性增强
Java多线程基本知识
Java同步关键词详解
java并发包线程池及在开源软件中的应用
Java并发包消息队里及在开源软件中的应用
Java JMS技术
Java动态代理反射
二、离线计算系统
1、hadoop快速入门
hadoop背景介绍
分布式系统概述
离线数据分析流程介绍
集群搭建
集群使用初步
2、HDFS增强
HDFS的概念和特性
HDFS的shell(命令行客户端)操作
HDFS的工作机制
NAMENODE的工作机制
java的api操作
案例1:开发shell采集脚本
3、MAPREDUCE详解
自定义hadoop的RPC框架
Mapreduce编程规范及示例编写
Mapreduce程序运行模式及debug方法
mapreduce程序运行模式的内在机理
mapreduce运算框架的主体工作流程
自定义对象的序列化方法
MapReduce编程案例
4、MAPREDUCE增强
Mapreduce排序
自定义partitioner
Mapreduce的combiner
mapreduce工作机制详解
5、MAPREDUCE实战
maptask并行度机制-文件切片
maptask并行度设置
倒排索引
共同好友
6、federation介绍和hive使用
Hadoop的HA机制
HA集群的安装部署
集群运维测试之Datanode动态上下线
集群运维测试之Namenode状态切换管理
集群运维测试之数据块的balance
HA下HDFS-API变化
hive简介
hive架构
hive安装部署
hvie初使用
更多系统教程 点我
7、hive增强和flume介绍
HQL-DDL基本语法
HQL-DML基本语法
HIVE的join
HIVE 参数配置
HIVE 自定义函数和Transform
HIVE 执行HQL的实例分析
HIVE最佳实践注意点
HIVE优化策略
HIVE实战案例
Flume介绍
Flume的安装部署
案例:采集目录到HDFS
案例:采集文件到HDFS
三、数据迁移工具Sqoop
1) 介绍 和 配置Sqoop
2) Sqoop shell使用
3) Sqoop-import a) DBMS-hdfs b) DBMS-hive c) DBMS-hbase
4) Sqoop-export
四、Flume分布式日志框架
1) flume简介-基础知识
2) flume安装与测试
3) flume部署方式
4) flume source相关配置及测试
5) flume sink相关配置及测试
6) flume selector 相关配置与案例分析
7) flume Sink Processors相关配置和案例分析
8) flume Interceptors相关配置和案例分析
9) flume AVRO Client开发
10) flume 和kafka 的整合
五、内存数据库redis
1) redis特点、与其他数据库的比较
2) 如何安装redis
3) 如何使用命令行客户端
4) redis的字符串类型
5) redis的散列类型
6) redis的列表类型
7) redis的集合类型
8) 如何使用java访问redis【a.python访问redis,scala访问redis】
9) redis的事务(transaction)
10) redis的管道(pipeline)
11) redis持久化(AOF+RDB)
12) redis优化
13) redis的主从复制
14) redis的sentinel高可用
15) twemproxy,codis实战
16) redis3.x集群安装配置
六、Storm上下游及架构集成
1) kafka是什么
2) kafka体系结构
3) kafka配置详解
4) kafka的安装
5) kafka的存储策略
6) kafka分区特点
7) kafka的发布与订阅
8) zookeeper协调管理
9) java编程操作kafka
10) scala编程操作kafka
11) flume 和kafka 的整合
12) Kafka 和storm 的整合
七、Storm从入门到精通
1) Storm的基本概念
2) Storm的应用场景
3) Storm和Hadoop的对比
4) Storm集群的安装的linux环境准备
5) zookeeper集群搭建
6) Storm集群搭建
7) Storm配置文件配置项讲解
8) 集群搭建常见问题解决
9) Storm常用组件和编程API:Topology、 Spout、Bolt
10) Storm分组策略(stream groupings)
11) 使用Strom开发一个WordCount例子
12) Storm程序本地模式debug、Storm程序远程debug
13) Storm事物处理
14) Storm消息可靠性及容错原理
15) Storm结合消息队列Kafka:消息队列基本概念(Producer、Consumer、Topic、Broker等)、消息队列Kafka使用场景、Storm结合Kafka编程API
16) Storm Trident概念
17) Trident state 原理
18) Trident开发实例
19) Storm DRPC(分布式远程调用)介绍
20) Storm DRPC实战讲解
21) Storm和Hadoop 2.x的整合:Storm on Yarn
八、scala编程
1) scala解释器、变量、常用数据类型等
2) scala的条件表达式、输入输出、循环等控制结构
3) scala的函数、默认参数、变长参数等
4) scala的数组、变长数组、多维数组等
5) scala的映射、元组等操作
6) scala的类,包括bean属性、辅助构造器、主构造器等
7) scala的对象、单例对象、伴生对象、扩展类、apply方法等
8) scala的包、引入、继承等概念
9) scala的特质
10) scala的操作符
11) scala的高阶函数
12) scala的集合
13) scala数据库连接
九、内存计算体系Spark
1) Spark介绍
2) Spark应用场景
3) Spark和Hadoop MR、Storm的比较和优势
4) RDD
5) Transformation
6) Action
7) Spark计算PageRank
8) Lineage
9) Spark模型简介
10) Spark缓存策略和容错处理
11) 宽依赖与窄依赖
12) Spark配置讲解
13) Spark集群搭建
14) 集群搭建常见问题解决
15) Spark原理核心组件和常用RDD
16) 数据本地性
17) 任务调度
18) DAGScheduler
19) TaskScheduler
20) Spark源码解读
21) 性能调优
22) Spark和Hadoop2.x整合:Spark on Yarn原理
十、SparkStreaming应用实战
Spark-Streaming简介
Spark-Streaming编程
实战:StageFulWordCount
Flume结合Spark Streaming
Kafka结合Spark Streaming
窗口函数
ELK技术栈介绍
ElasticSearch安装和使用
Storm架构分析
Storm编程模型、Tuple源码、并发度分析
Storm WordCount案例及常用Api分析
十一、机器学习算法
1、python及numpy库
机器学习简介
机器学习与python
python语言–快速入门
python语言–数据类型详解
python语言–流程控制语句
python语言–函数使用
python语言–模块和包
phthon语言–面向对象
python机器学习算法库–numpy
机器学习必备数学知识–概率论
系统教程 点我
2、常用算法实现
knn分类算法–算法原理
knn分类算法–代码实现
knn分类算法–手写字识别案例
lineage回归分类算法–算法原理
lineage回归分类算法–算法实现及demo
朴素贝叶斯分类算法–算法原理
朴素贝叶斯分类算法–算法实现
朴素贝叶斯分类算法–垃圾邮件识别应用案例
kmeans聚类算法–算法原理
kmeans聚类算法–算法实现
kmeans聚类算法–地理位置聚类应用
决策树分类算法–算法原理
决策树分类算法–算法实现