有大半年时间在做大数据分析,主要产品为OI。
OI 用到了flume,spark,graphite。学习了大数据的开发。
优点:flume,spark源代码的学习,performance调优
OI
项目的框架:用flume做数据收集,spark做数据分析,graphite做数据显示,seyren做告警系统
项目的难点:spark和flume的框架的学习,performance的调优
遇到的问题:
1.这个问题整个小组研究了大半个月左右,一开始以为是scala 中list代码的问题,scala的某一版本中list的序列化是会按照列表成员的个数做递归调用的。后来发现用的不是那个版本。后来定位到是提交task,deriver 调用JavaSerialize反序列化RDD时抛出的问题,就在反序列化之前将byte数组保存到文件中。并调用代码发现是spark两次调用了UpdateStat 方法,导致了RDD的依赖没有被切断
2.经常抛出OutOfMemory问题,发现是spark太消耗内存了,spark专门有一章是说memory tuning的,对照着修改了一些参数解决了这个问题
3.死锁的问题,解决方法是设置wait的时间,或者用block queue
private void dequeueEvents(List<byte[]> events) { while ( eventQueue.size() == 0) { synchronized (dequeueMonitor) { dequeueMonitor.wait(1000); } } synchronized (eventQueue) { events.addAll(eventQueue); eventQueue.clear(); } synchronized (queueMonitor) { queueMonitor.notify(); } } public void queueEvent (byte[] body) throws InterruptedException { while (eventQueue.size() >= maxEventQueueSize) { synchronized (queueMonitor) { queueMonitor.wait(1000); } } synchronized (eventQueue) { eventQueue.add(body); } synchronized (dequeueMonitor) { dequeueMonitor.notify(); } }
4.Flume 经常抛出Session timeout exception,是因为当时网络不好
5. Spark调用hdfs接口的时候,经常报native方法找不到,需要在jre的native目录下添加hadoop相关的so文件
6. 修改whisper的write函数,让新增的数据可以和原始数据相加,而不是直接覆盖
项目的优化:
1.写了专门用来监控performance相关参数的软件OI-Performance,在graphite上能够很好的展示这些属性,便于观察,监控的属性有SystemCpuLoad,ProcessCpuLoad,HeapMemoryUsage,GC的时间,disk util,network,以及一些业务属性
2.修改了spark中的storage level,减少了内存占用量
3. 调整了JVM中new-ratio的比例,延长变量在新生代中存活的时间,减少full GC的时间
4.减少了collector这部环节,让agent直接发送数据到flume,让压缩过的数据直接传输到spark,减少了磁盘的读写以及内存的开销
5. 减少了Avro格式转换成Seven自定义对象的环节,OI直接从generic record获取数据
6.替换flume的channel类型,让flume使用Memory Channel,减少磁盘的读写
基础知识补习:
1. ByteBuffer http://www.cnblogs.com/freeliver54/archive/2011/08/10/2133382.html
sendBuffer.flip(); //limit =position,position = 0 final int nbSentBytes = sendData(sendBuffer); //发送数据调用sendBuffer的get方法,数据的长度=limit-position sendBuffer.limit(sendBuffer.capacity());//重置limit为capacity sendBuffer.rewind();//position=0,mark = -1
2. MogoDB的查询,查询很简单只要设置查询条件,调用相关的增删查方法就可以了
Query query = new Query(); Criteria criteria = Criteria.where("instanceInfo").is(clientInfo.getInstanceInfo()) .and("z7addr").is(clientInfo.getZ7addr()); query.addCriteria(criteria); Update update = new Update(); update.set("imei", clientInfo.getImei()).set("msisdn", clientInfo.getMsisdn()) .set("clientVersion", clientInfo.getClientVersion()).set("osName", clientInfo.getOsName()) .set("osVersion", clientInfo.getOsVersion()) .set("appMap", clientInfo.getAppMap()); mongoTemplate.upsert(query, update, clientInfo.getClass());
3. JMX获取Java进程的heapmemory and Cpu Info
MBean的介绍 http://blog.csdn.net/rudymatrix/article/details/1922868
4.Scala语言可伸缩的语言 是一种多范式的编程语言,一种类似java的编程 ,设计初衷是要集成面向对象编程和函数式编程的各种特性http://baike.baidu.com/view/1588150.htm?fr=aladdin
相关推荐
收集整理了中亚地区实际石油区块数据资料, 通过模型计算, 给出了各区块的风险-效益分析; 分析结果表明, 哈萨克斯坦大部分油气区块位于低风险区域, 土库曼斯坦的油气项目多数属于高风险高收益, 投资者在乌兹别克斯坦...
例如,M淘宝电商积累了大量的历史数据,日常工作涉及的数据整理,以及从网页爬下来的数据也只是第一步,最终的数据分析才是重点,或者由于工作需要将多个Excel表合成一个 Excel表等,这些工作都需要大量的时间和人力,那么...
50+数据分析项目整理
财务大数据分析实验报告全文共1页,当前为第1页。财务大数据分析实验报告全文共1页,当前为第1页。财务大数据分析实验报告 财务大数据分析实验报告全文共1页,当前为第1页。 财务大数据分析实验报告全文共1页,当前...
Python项目整理: 基础入门、数据分析、爬虫实践-Python-Projects
平台项目管理库披露数据进行整理,包含如下指标: 项目名称、地区、行业、总投资额、 发起时间、项目阶段、回报方式、合作方式、合作期限、项目概况、合作范围、SPV公司 股东等,可使用地区变量筛选地区。使用所属...
项目实战:通过完成实际数据分析项目,应用已学习的Python技能和数据分析技术,提高自己的实战能力。 一些经常使用的Python数据分析库包括:NumPy, Pandas, Matplotlib, Seaborn, SciPy和Scikit-learn等。在...
项目实战:通过完成实际数据分析项目,应用已学习的Python技能和数据分析技术,提高自己的实战能力。 一些经常使用的Python数据分析库包括:NumPy, Pandas, Matplotlib, Seaborn, SciPy和Scikit-learn等。在...
项目实战:通过完成实际数据分析项目,应用已学习的Python技能和数据分析技术,提高自己的实战能力。 一些经常使用的Python数据分析库包括:NumPy, Pandas, Matplotlib, Seaborn, SciPy和Scikit-learn等。在...
项目实战:通过完成实际数据分析项目,应用已学习的Python技能和数据分析技术,提高自己的实战能力。 一些经常使用的Python数据分析库包括:NumPy, Pandas, Matplotlib, Seaborn, SciPy和Scikit-learn等。在...
项目实战:通过完成实际数据分析项目,应用已学习的Python技能和数据分析技术,提高自己的实战能力。 一些经常使用的Python数据分析库包括:NumPy, Pandas, Matplotlib, Seaborn, SciPy和Scikit-learn等。在...
项目实战:通过完成实际数据分析项目,应用已学习的Python技能和数据分析技术,提高自己的实战能力。 一些经常使用的Python数据分析库包括:NumPy, Pandas, Matplotlib, Seaborn, SciPy和Scikit-learn等。在...
项目实战:通过完成实际数据分析项目,应用已学习的Python技能和数据分析技术,提高自己的实战能力。 一些经常使用的Python数据分析库包括:NumPy, Pandas, Matplotlib, Seaborn, SciPy和Scikit-learn等。在...
项目实战:通过完成实际数据分析项目,应用已学习的Python技能和数据分析技术,提高自己的实战能力。 一些经常使用的Python数据分析库包括:NumPy, Pandas, Matplotlib, Seaborn, SciPy和Scikit-learn等。在...
数据分析技术将帮助企业用户在合理时间内获取、管理、处理以及整理海量数据,为企业经营决策提供积极的帮助。数据分析作为一门前沿技术,广泛应用于物联网、云计算、移动互联网等战略新兴产业。有实践经验的数据分析...
自己开发的风资源分析工具包WindAnalysis-WindAnalysis风数据分析工具包教程-V1.4.pdf 本帖最后由 He_Challen 于 2017-9-6 14:40 编辑 由于工作的原因,今年项目开始转型风电项目,在慢慢上手的过程中发现,...
这个项目是一个基于Python语言和Flask框架开发的旅游网站数据分析及可视化系统,旨在帮助旅游行业从业者更好地了解市场趋势和客户需求。以下是该项目的资源介绍: 1. **功能模块**: - **数据收集**:系统能够从...
基于Python的双色球和大乐透数据分析与统计项目旨在利用Python语言对中国彩票——双色球和大乐透的历史数据进行分析与统计。通过该项目,用户可以了解彩票数据的分布规律、号码出现的频率以及相关的统计特征,从而为...
目录 呼叫中心数据分析 2 一. 数据分析的目的 2 1. 运营管理 2 2. 客户管理 2 3. 内外服务 2 二. 数据分析的基本步骤 2 1. 数据清洗 2 2. 基本指标建立 3 三. 统计分析方法的应用 3 1. 运营管理 3 2. 客户管理 4 ...
软件开发设计:应用软件开发、系统...云计算与大数据:包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。