大数据从入门到放弃

编程入门 行业动态 更新时间:2024-10-17 23:30:35

大数据从<a href=https://www.elefans.com/category/jswz/34/1770026.html style=入门到放弃"/>

大数据从入门到放弃

大数据的核心:海量数据分析
—————————————————————功能划分—————————————————————————————
海量数据存储HDFS,Hive(本质还是HDFS),HBASE(底层依旧是HDFS)
数据清洗MapReduce,Hive(ETL),SparkCore
海量数据分析MapReduce,SparkSQL,hive(SQL),impala
数据展示javaweb,帆软,hcharts,echarts幽梦,百度,帆软————————————第一方面:大数据离线分析————————————————————————————————————————————————Hadoop 2.x(Common,HDFS,MapReduce,Yarn):储存,分析环境搭建,处理数据思想功能:储存数据(HDFS)数据分析(mapReduce)
介绍:	Apache的顶级项目
包含的模块:	Common:公共的工具,为其他模块提供支撑HDFS:是一个分布式文件系统,提供高吞吐量数据储存将数据化为很多小块,默认一块block(128MB)500M分4块,每块存储3份主节点:NameNode决定数据存储在那个Datanode管理元素,索引管理元数据存在内存,也存在磁盘,就是文件<fsimage>管理从节点处理客户端发过来的请求启动过程:加载Fsimage中内容到内存中,同步HDFS的变化SecondaryNameNode功能:辅助nameNode同步本地元数据fsimge(old)+edits = fsimage(new)edits记录了HDFS的修改操作,不能丢失,通过edits日志文件信息,可以解析得到元数据合并过程中,合并到fs.temp文件,完成后修改名字为fsimage删除fs.temp		从节点:DataNode存储,管理(当前机器)MapReduce:大数据集合的并行计算,分而治之思想将数据划分为多个部分,单独处理,最后将处理结果进行合并Map:(MapTask)处理数据Reduce:(ReduceTask)合并MapTask输出的结果数据MapReduce编程1)工程导入2)HDFS API3)MapReduce处理数据流程在整个MapRedue程序中,所有的数据流程流式都是键值对(Key-value)MapReduce执行过程	Input->Map->shuffle->Reduce->OutputInput:读取HDFS上数据 	输出K,vMapper:通过空格分隔,取出里面的单词shuffle:分区决定key交由哪个reduce处理默认:按照key的hash值对reduce个数取余分组 将相同Key的value放到一个集合中排序 按照字典顺序排序
****************优化:combiner合并在map阶段提前进行了一次合并,等同于提前执行reduce操作好处:可以降低reduce的压力不是所有程序都适合compress压缩减少磁盘IO以及网络IOReduce:(处理)将集合里面的值拿出来相加Output:将内容写到HDFS文件中YARN:任务调度和分布式集群资源管理框架管理CPU和内存,分配给MapReduce 程序的运行主节点:Resourcemanager管理子相应客户要求任务调度存节点:NodeManager管理当前机器的资源(CUP,memory)程序提交到yarn上运行只有一种方法bin/yarn jarbin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /datas/tmp/wordcount  /datas/mapreduce/output18088 和 50070 上查看数据类型:和java相似只是重新封装了一些类型BooleanWritable	布尔ByteWritable 单字节IntWritable	整数FloatWritable 浮点LongWritable 长整数Text UTF8格式文本NullWritable <key,value>中为空时使用类型转换 ->get<-set————————————————————————————————————————————————————————————
达梦数据库:1,通用性兼容多种硬件体系2,高性能支持列式存储,数据压缩,物化视图等面向联机事务分析场景的优化选项,支持2000个以上的高并发处理3,高可用可配置数据守护系统(主备),自动快速故障恢复,具有强大的容灾处理能力支持物理备份和恢复,支持在线和离线备份,支持对库、表空间、表、归档等多种颗粒的备份,支持基于备份集的方式进行备份,支持完全备份、增量备份的备份和还原,支持基于时间点的还原4,高可扩展支持拓展软件包和多种工具,实现海量数据分析处理、数据共享集群(DSC)和吴共享数据库集群(MPP)等扩展功能5,跨平台支持主流软硬件体系(linux、windows、中标麒麟、银河麒麟等操作系统),支持主流标准接口
Hive(数据库仓库):分析数据通过SQL语句对数据进行操作,SQL和MySQL的SQL基本一样底层是mapreduce功能:将sql语句转换成MapReduce程序,并且提交到Yarn上运行,读取HDFS上的数据进行处理分析数据的流程:1)创建数据库,创建表2)加载数据方式一:加载本地local数据:hdfs putLoad data local input 'Inpath' into table "目标表"加载HDFS数据:hdfs mvLOAD DATA INPATH 'Inpath'  INTO TABLE “目标表”;方式二:直接使用HDFS中普通命令上传将数据上传到对应目录3)编写SQL分析数据4)数据的保存传递参数UDF: 一对一 UDAT:多对一UDTF: 一对多
****数据倾斜:hive中的数据倾斜也就是MapReduce的数据倾斜现象:当某一种key的值数量过多,导致处理该key的reduce迟迟不能结束原因:joinmap join小表与大表joinreduce join大表与小表joinSMB join桶joingroup by/distinct参考:		:1)开启提前聚合有数据倾斜的时候进行负载均衡,当选项设定为true,生成的查询计划有俩个2)添加随机分布reduce执行2个MapReducemr1:输出之前key加随机数(位数一样)mr2:输出之前key去随机数(位数一样)------------------------------------------------------------		
协作框架:	sqoop:桥梁(HDFS<--->RDBMS)本身就是一个MapReduce程序,只有Map任务(sql+hadoop)用于RDBMS与HDFS之间数据导入导出Flume:采集数据,可以在多台机器上运行多个flume,	简单,就是一个配置文件采集日志文件数据,动态采集日志文件,数据流flum采集到的数据,一份给HDFS,用于做离线分析一份给Kafaka,实时处理三大高级组件:拦截器与spring中拦截器相似1)时间拦截器2)主机名拦截器3)自定义拦截器通过自定义正则表达式,实现数据过滤Failover sink processor故障转移:启动多个,但是工作的只有一个,只有active状态进程死掉,其他才可能接替工作,多个sink,谁权重,谁先干活往HDFS写数据,HDFS宕机了,数据不丢失,往文件里写load balancing sink processor负载均衡:负载均衡与故障转移,只能实现一个,不能同时实现,往往选择负载均衡
------------------------------------------------------------		
调度框架:	zakaban:		优点:想对比较全面,操作性想对比较好特点:分布式多执行器mysql重试:元数据放在mysql中友好的UI数据触发器高安全性支持插件,能从web Ui操作创建人物完整的人员管理系统组件:web server提供用户访问的接口,接收用户提交的工作流程,实现工作流的监控executor执行用户提交的工作流任务mysql用于储存所有的工作流信息,状态,日志定时任务Crontab(Linux自带)Zookeeper :布式应用程序协调服务HBASE数据库:	NOSQL数据库:不仅仅是数据库,将数据存储在内存中产生数据时代的3v:1海量数据 2多样数据库 3数据实时互联网3高:1高并发 2高扩展 3高性能特点:易扩展,大数据量,高性能,灵活性,高可用理论:
*************************关系数据库理论:事务管理(ACID)原子性:一个不可分割的工作单位一致性:事务前后数据完全一致隔离性:不被其他事务操作数据所干扰持久性:事务一旦被提交,对数据库中的改变就是永久的,数据库发生故障也不影响分布式系统:CAPConsistency(一致性)Availability(可用性)Partition Tolerance(分区容错性)********************分类:1)key-value键值*Redice键值对存储,查询快内容缓存,主要用于处理大数据的高访问负载,也用于一些日志系统等等2)colunmn列式存储*HBase将同一列的数据放在一起,查询非常快3)document文档存储*MongoDB		主要用于应用爬虫,JSON组成的文档经典用于web项目中,与KeyValue类似4)Graph 图结构存储*neo4j用于社交网络redis:单线程框架 客户端调用都经历,发送命令,执行命令,返回结果    支持高并发
*********************单线程是纯内存访问,非阻塞IO,单线程避免线程切换和竞态产生的消耗数据类型:1)String字符串2)hash哈希3)List列表4)set集合5)zset有序集合redis事务:三阶段: 开启 入队 执行事务5种情况1)正常执行2)放弃事务3)全体连坐:语法错误导致,比如set key4)冤头债主:错的不执行,运行才发生错误,对字符串+15)watch监控:事务开始之前监控,被其他客户修改了,事务不再执行,直接返回失败
**********************秒杀需求数据持久化--------------------------------------------------------------				
扩展前沿框架:Impala:游戏公司用的多,耗内存用来做数据分析ElaticSearch(ES)检索的框架相当于数据库,即可存储数据库,也可以检索数据第二方面:大数据实时分析Scala语言:OOP+FPSpark Core, SQL, StreamingKafka:消息队列Flink:前沿框架第三方面:机器学习Spark MLib
————————————————————————————————————————————————————————
学大数据统计是为了:让数据变现具体的体现
维度:分析任何的指标都会有唯独信息,没有唯独信息的指标意义不大,
cdh版本的好处1)兼容性问题解决2)框架的坑少
————————————————————————————————————————————————————————
网站日志的来源web 容器日志:接收用户请求并记录缺点:收集数据比较少服务器端字段主机名,请求的域名,时间客户端字段ip,url,refere_url,条件JS 埋点:通过JS监听用户的操作行为JS将收集好的数据发送日志服务器:nginx优点:可以采集到客户端所有的用户数据登陆信息cookie
项目架构选型和集群规划处理流程:数据源关系型数据库表:订单,用户,地址。。。日志文件页面数据,埋点数据数据采集sqoop,kettleflumekafka:主要用于实时的数据流处理,消息队列,缓存shell数据存储HDFS,hive,hbase(列式存储的数据库)数据清洗Mapreduce,hive(ETL),sparkCore数据处理(分析)SparkSQL,hive,mapreduce,impala数据应用(展示)。。。。。。帆软
——————————————————————————————————————————————————————————————————————			
架构逻辑1)用户访问不同的客户端,触发不同的SDK(前端,IOS,Android)2)SDK收集所有需要的数据,发送给nginx日志服务器(后台开发)3)nginx服务器接收SDK发送过来的日志,并记录下来(后台开发)4)使用flume采集所有日志节点上的数据到HDFS统一存放5)使用MapReduce对数据进行ETL6)使用MapReduce对ETL之后的数据构建分析模型(Hive)按照需求(topic)构建表7)使用Hive对模型数据进行指标分析8)将Hive分析结果导出Mysql中——————————————————————————————————————————————————————————————————————————	
数据量大小(中小型电商网站为例)访客数:200~500W页面上:(平均值)电商:20~40个页面记录大小:300~1000字节20个字段:400字节一条的数据量:记录数:300W  *20 = 6000W数据大小:60000000 * 0.5kb=30GB常规的中小型公司一天的数据量:20GB~40GB 数据存储3年30GB * 365 * 3  * 3(3份)= 98TB一台机器:8 *2 = 16TB可用空间:16TB *80%  = 12TBDataNode:90 /12 = 8 + (1~3) = 9~11台公司业务发展比较快,准备的机器就会稍微多一些
——————————————————————————————————————————————————————————————————
所有集群台数
DataNode、Nodemanager、RegionServer:9~11台
Namenode + ResourceManager、HMaster:3~4台node1: Namenode(active)node2: Namenode/ ResourceManager(standby)
node3: ResourceManager(active)
Hive、azkaban:2台hive需要的资源比较少,就是一个MapReduce客户端,所有可以和其他工具放一起client(beeline) ->hiverserver2 ->metastore
zookeeper:3台、5台
机器的选择8核16GB 、16核32GB 、32核64GB、32核128GBYarn:计算task:1核1GBNameNode:16GBRegionServer(16GB)
系统盘/数据盘:普通硬盘
元数据存储的硬盘/zookeeper的硬盘:SSD
————————————————————————————————————————————————————————————--
ETL的实现
数据过滤:肯定用不到或者非常数据
字段格式化:字段处理,日期处理
字段补全解析字段:ip:省市区信息user-agent:浏览器、操作系统提取补全userid ->age,addr
构建Pageview模型
Map: key  	valueip		其他字段
reduce:每一个IP调用一次Reduce方法将所有的记录放到List可以对所有的记录进行排序:访问时间排序生成对应的字段迭代整个List集合如果list的长度为1,直接输出结果如果拿到的是第一条记录i=0,跳过循环到达第二个记录·i=1,sessionId = RandomUUID.toString();step=1length =list[i].getTime() –list[i-1].getTime判定:length >30分钟sessionId重置step=1如果I = list.length-1输出上一条和当前条
output总结:(1)通过MapReduce程序得到不同的模型数据bin/yarn jar XX.max inpath,outpath(2)导入数据创建分区目录,
加载数据
修复分区(3)分析数据————————————————————————————————————————————————————————
HBeas :

更多推荐

大数据从入门到放弃

本文发布于:2024-03-08 09:59:19,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1720552.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:入门   数据

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!