资金引入模式: 天使+孵化器 天使基金平台 天使机构 著名投资人: 新东方:徐小平 腾讯:曾李青 创新企业发展时期: 种子期(A)—天使投资: 导入期(B)—风险投资: 成长期(C)—融资: 成熟期(D)—: 个人发展时期: 培训: 百度大厦: 北京市海淀区上地科技园 分部:深圳市南山区高新技术产业园区 阿里巴巴西溪园区: 关系型数据 杭州市余杭区文一西路969号 腾讯大厦: 深圳市南山区高新科技园北区, 深南大道北侧。 大数据开发方向: 1.大数据工程师 2.数据分析师 3.大数据科学家 4.其他(数据挖掘等) 大数据工程师——发展结构图:https://cdn.jsdelivr.net/gh/AmbroseRen/Picture/img/BigData/framework.jpg 大数据:指在一定范围时间内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长和多样化的信息资产。 大数据包括:结构化、半结构化、非结构化数据。非结构化数据成为主流。 数据级别:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。 1Byte=8 bit 1KB=1024Byte 大数据特点:volumn(容量)、velocity(高速)、variety(多样)、value(低价值密度)、veracity(精确性)。 *********************** 代理服务器负载均衡: 反向代理负载均衡: Nginx:高性能的反向代理服务器,是轻量级WEB服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器 特点:占内存少,并发能力强,完全由C语言写成。 自己的类库:zlib、pcre和OpenSSL,之外标准模块只用系统C库函数。 地址转换网关负载均衡: NAT(NetWork Address Translation网络地址转换)负载均衡: 地址转换网关负载均衡: DNS负载均衡: 分摊到多个操作单元上进行执行的一种增加吞吐量、加强网络数据处理能力、提高网络灵活性和可用性的数据处理模式。 软件负载均衡: 硬件负载均衡: 部署方式: 路由模式:部署灵活 桥接模式:不改变现有网络架构 服务器直接返回模式:适合吞吐量大特别是内容分发的网络应用。 1.数据采集——Sqoop、Cammel、Datax等工具 2.数据储存——GFS、HDFS、TFS 数据水平扩展—— 3.快速运算——MapReduce需大量的Java代码 -------------------- Flumn:高可用、高可靠的海量日志采集、聚合及传输的系统,它是流式处理的架构。 Cloudera公司提供 Flumn OG(初版): Flumn NG: Event-Flumn:数据传输的基本单元(.avor格式) Agent——是一个JVM进程,包含Source、Channel、Sink和其他组件 作用:节点传输Event字节 最小的独立运行单元 Channel-Channel位于Source和Sink之间,用于缓存Event。Sink成功发送Event,便移除Event 从Channel。 Client——生产数据。 注:MapReduce为批处理,Strom为流处理框架,Spark为一站式微批处理框架。 --------Redis内存数据库---------- 1.普通连接 Jedis jedis =new Jedis("localhost"); jedis.set("foo","bar"); String value=jedis.get("foo"); system.out.println(value); 2.建立连接 redis.ip=172.86.0.1 redis.port=6379 redis.pool.maxActive=1024 ....... 获取连接池 return JedisPoolConfig config =new JedisPoolConfig(); //最大连接数 config.setMaxTotal(Integer.valueof(getResourceBundle().getString("redis.pool.maxTotal"))); //从池中获取对象 Jedis jedis =sentinelpool.getSentinelpoolResource(); String keys ="name"; jedis.del(keys); jedis.set("keys","snowolf"); //释放池对象 sentinelpool.returnSentinelpoolResource(jedis); -----Redis中jedis数据类型------- String: set:为一个key设置value get:获取一个key的value geset:为一个key设置value并返回value mset:为多个key设置value msetnx:指定key有任意一个已存在,则不进行任何操作 mget:获取多个key的value INCR:将key对应的value自增1,并返回增后的值 INCRBY:将key对应的value自增指定的整形数值,并返回增后的值 INCRBY sequence 100 获取一批(如100个)序列值 DECR/DECRBY:(同上)自减 List: Lpush:向指定list左侧插入1个或多个元素,返回插入后的list长度 Rpush:右侧插入 Lpop:从左移除一个或多个元素 Rpop:从右 llen:返回list的长度 lrange:返回list中指定范围的元素 Hash: Set: Sorted Set:有序、不可重复的String集合 zadd:添加 zrem:移除 zcard:返回member数量 zrank/zrevrank:在Sorted Set中按升序/降序进行排列 Bitmap和HyperLog exists:判断是否存在——1存在,0不存在 del:删除 ttl/pttl:返回一个key剩余的有效时间 数据持久化: -----redis日志操作------- redis数据持久化至硬盘的能力是可以关闭的 redis最大使用内存:在32位OS中,3GB;在64位OS中没有限制 设置redis内存:maxmemory 100MB !并设置上限会根据淘汰机制“”淘汰数据,释放空间 #默认是noeviction,即不进行数据淘汰 maxmemory-policy volatile-lru volatile-lru:使用LRU算法进行数据淘汰(淘汰上次使用时间最早的,且使用次数最早的key,只淘汰设定了有效期的key) allkeys-lru:使用LRU算法进行数据淘汰 volatile-random:随机淘汰数据,只淘汰设定了有效期的key allkeys-random:随机淘汰数据,所有的key都可以被淘汰 volatile-ttl:淘汰剩余有效期最短的key RDB:fork出一个子进程 优点:性能影响最小 AOF: appendfsync no:不进行fsync,将flush文件交给OS决定 appendfsync always:每写入一条日志就进行一次fsync操作,数据安全性高,速度慢。 appendfsync everysec:交由后台线程每秒一次 优点:最安全,数据不会丢失。 日志写入一半,断电时可以redis-check-aof工具修复 缺点:AOF文件通常比RDB文件大;性能消耗较RDB高;数据恢复速度慢 ---------------------------------------------------------------------------------- 数据仓库——Hive、Pig等将SQL转化成MapReduce的解析引擎。 HiveQL:开发SQL类型脚本用于做MapReduce操作的平台 特点:处理数据到HDFS中 数据类型: tinyInt(Y)——smallInt(S) int——bigInt(L) Hive和Hadoop交互的命令: Execute Query:查询驱动 Get Paln:在驱动程序帮助下,查询编译器 Get MetaData: Send MataData: Execute Plan: Execute Job: ------------------- SparkSQL------------------------- 微批处理——Spark一站式微批处理框架 Core+sparksql+Spark streaming 定义:是专为大规模数据处理而设计的快速通用的计算引擎。 类库:SQL、DataFrames、MLlib、GraphX、Spark Streaming 优于Hadoop 的方面: Spark计算速度比hadoop快100倍 具有hadoop的所有优点,强化了数据可以保存在内存中,不需要读写HDFS,能更好的适应数据挖掘。 Method: RDD.distData();// //默认删除缓存为LRU算法 RDD.unpersist();//主动删除缓存数据 ---------------------------- Pig:用于开发MapReduce操作的脚本程序语言的平台 Kylin: 流式计算——Strom/JStrom这样的低延时的流式计算框架。 批处理——Hadoop集群(包括HDFS+MapReduce+Yarn+Strom)框架 ||--------zookeeper分布式协调技术--------- Linux 运行下载 http://zookeeper.apache.org/releases.html 目的:防止分布式系统中的多个进程之间相互干扰。 实现:分布式锁 产品:Google的Chubby(闭源的)、Apache的ZooKeeper(雅虎开发捐赠的) 服务:数据结构+原语+watcher(通知)机制 watcher触发器:一次性触发器 exists()、getChildren()、getData()。 ###提取tar文件 $ cd opt/ $ tar -zxf zookeeper-3.4.6.tar.gz $ cd zookeeper-3.4.6 $ mkdir data ###创建配置文件 $ vi conf/zoo.cfg tickTime = 2000 dataDir = /path/to/zookeeper/data clientPort = 2181 initLimit = 5 syncLimit = 2 ###测试 $ bin/zkServer.sh start 执行此命令后,你将收到以下响应 $ JMX enabled by default $ Using config: /Users/../zookeeper-3.4.6/bin/../conf/zoo.cfg $ Starting zookeeper ... STARTED 启动CLI $ bin/zkCli.sh 键入上述命令后,将连接到ZooKeeper服务器,你应该得到以下响应。 Connecting to localhost:2181 ................ ................ ................ Welcome to ZooKeeper! ................ ................ WATCHER:: WatchedEvent state:SyncConnected type: None path:null [zk: localhost:2181(CONNECTED) 0] ###停止 $ bin/zkServer.sh stop ###创建节点 create -s /path /data 子节点 create -e /parent/path/subnode/path/data 监视器 get /path [watch] 1 查节点数据 set /path /data 移除节点 rmr /path -----------------HBase-------------------- HBase运行需要zookeeper(是一个分布式协调的服务) 是一个分布式、可伸缩、面向列的开源Key-Value数据库, 是一个结构化数据的分布式存储系统。 运行于HDFS上,相较于Hive,他是在数据库上运行,而非MapReduce上。 表是物理表,适合储存非结构化数据。 适合大数据实时查询,适合OLTP。 -------------------------------------------- JavaAPI操作+Phoenix Hub: Sqoop:用来在HDFS和RDBMS之间来回导入和导出数据。 Oozie: -------------------------------------------- RDBMS(关系型数据库)遵循ACID规则 MongoDB=>NoSQL(非关系型数据库) 分布式: 可靠性(容错性):一台服务器崩溃不会影响其他服务器。 可扩展性:可随意增加集群处理节点 资源共享: 更快的速度: 高性能: 开放系统: ---------------------------------------------- 4.业务处理通用架构: AWS Lambda架构、Kappa Architecture Lambda: Batch Layer:存储数据集 Real-Time(Speed)Layer:更新数据集 Serving Layer:合并数据集 Kappa Architecture: 是一种软件架构模式加上一个只允许追加不允许修改的日志。 解决了批处理问题,用的流处理 流计算替代全量数据处理 ## 辅助工具:提高工作效率,加快运行速度 Ozzie、azkaban:定时任务调度 Hue、Zepplin:图形化任务执行管理,结果查看工具 ------------------Scala--------------------------- Scale纯函数式语言:编写Spark程序的最佳语言,或Python。 :指可伸缩的服务端脚本语言,可以与Java无缝对接 精度:scala>val b:Byte =10 b: Byte =10 scala>val y:Long =b y:Long =10 def foo(x:Int) =x //Call By Value对函数实参求一次值 def foo(x:=>Int) =x //Call By Name对函数实参每次在函数体内被用到时都会求值。 scala>def bar(x:Int,y:=>Int)=1 def add(x:Int y:Int)= x+y 等价 def add(x:Int)(y:Int)= x+y //scala中递归函数 def factorial(n:Int):Int = if(n<=) 1 else n*factorial(n-1) Allluxio、Kylin等:数据预处理,加快运算速度。 ------------------- 高阶技能: 1.机器人学习算法以及mathout+MLlib 2.R语言 3.Lambda架构 4.Kappa架构 5.Kylin 6.Alluxio -------------Hadoop---------------------- 创始人:Doug Cutting 主流公司:Cloudera的Apache Hadoop 出现原因: 在Hadoop 出现之前,高性能计算和网格计算一直是处理大数据问题主要的使用方法和工具,它们主要采用消息传递接口(Message Passing Interface,MPI)提供的API 来处理大数据。 高性能计算的思想是将计算作业分散到集群机器上,集群计算节点访问存储区域网络SAN 构成的共享文件系统获取数据,这种设计比较适合计算密集型作业。当需要访问像PB 级别的数据的时候,由于存储设备网络带宽的限制,很多集群计算节点只能空闲等待数据。 而Hadoop却不存在这种问题,由于Hadoop 使用专门为分布式计算设计的文件系统HDFS,计算的时候只需要将计算代码推送到存储节点上,即可在存储节点上完成数据本地化计算,Hadoop 中的集群存储节点也是计算节点。 在分布式编程方面,MPI 是属于比较底层的开发库,它赋予了程序员极大的控制能力,但是却要程序员自己控制程序的执行流程,容错功能,甚至底层的套接字通信、数据分析算法等底层细节都需要自己编程实现。这种要求无疑对开发分布式程序的程序员提出了较高的要求。相反,Hadoop 的MapReduce 却是一个高度抽象的并行编程模型,它将分布式并行编程抽象为两个原语操作,即map 操作reduce 操作,开发人员只需要简单地实现相应的接口即可,完全不用考虑底层数据流、容错、程序的并行执行等细节。这种设计无疑大大降低了开发分布式并行程序的难度 Hadoop:Hadoop Distributed File System,简称HDFS。 分布式处理(系统基础)架构。 核心:HDFS,MapReduce HDFS为海量数据提供存储,MapReduce为海量数据提供计算。 特点:高容错性,高吞吐量来访问应用程序的数据,适合有超大数据集的应用程序。HDFS放宽了(relax)POSIX的要求,可以流的形式访问文件系统中的数据。 redis:是内存数据库(基于二进制流)即序列化为字节流——分布式外部存储,有丰富的数据结构。 redis特点:数据结构丰富、低响应延时、高吞吐、纯内存,使之适合OLAP场景 OLTP(On-Line Transaction Processing):联机事务处理(面向交易的处理系统) 传统的关系型数据库应用:主要是基本的、日常的事务处理,例如银行交易。 OLAP(On-Line Analytical Processing):联机分析处理 数据仓库系统的主要应用:支持复杂的分析操作,侧重决策支持, 并且提供直观易懂的查询结果。 ----------------开源协议簇-------------------- Linux也是采用的GPL/LGPL开源协议和BSD开源协议。 POSIX:Portable Operating System Interface of Unix 即:可移植操作系统接口,是一个标准簇 遵循POSIX标准兼容的操作系统编写的程序可以跨平台编译执行。 MPL是Mozlia Public Licence的简写 LGPL协议(NS,SL,需修改state) Mozilla协议(不能闭源,同licnece,需修改state) GPL(NS,SL,不用提供修改说明) ----可以闭源 BSD开源协议:自由协议,可以自由使用,修改源代码。 Apache Licence同BSD协议类似。需版权说明。 MIT开源协议 ----------------WebService----------------------- WebService是夸平台的远程调用技术,实现了企业间Web服务的共享。 导包:cxf包 使用@WebService注解