`

项目整理-大数据分析项目

 
阅读更多

有大半年时间在做大数据分析,主要产品为OI。

OI 用到了flumesparkgraphite。学习了大数据的开发。

优点:flumespark源代码的学习,performance调优

 

OI

项目的框架:用flume做数据收集,spark做数据分析,graphite做数据显示,seyren做告警系统

项目的难点:sparkflume的框架的学习,performance的调优

遇到的问题:

1.这个问题整个小组研究了大半个月左右,一开始以为是scala list代码的问题,scala的某一版本中list的序列化是会按照列表成员的个数做递归调用的。后来发现用的不是那个版本。后来定位到是提交taskderiver 调用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方法找不到,需要在jrenative目录下添加hadoop相关的so文件

6. 修改whisperwrite函数,让新增的数据可以和原始数据相加,而不是直接覆盖

 

项目的优化:

1.写了专门用来监控performance相关参数的软件OI-Performance,graphite上能够很好的展示这些属性,便于观察,监控的属性有SystemCpuLoadProcessCpuLoadHeapMemoryUsageGC的时间,disk utilnetwork,以及一些业务属性

2.修改了spark中的storage level,减少了内存占用量

3. 调整了JVMnew-ratio的比例,延长变量在新生代中存活的时间,减少full GC的时间

4.减少了collector这部环节,让agent直接发送数据到flume,让压缩过的数据直接传输到spark,减少了磁盘的读写以及内存的开销

5. 减少了Avro格式转换成Seven自定义对象的环节,OI直接从generic record获取数据

6.替换flumechannel类型,让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

 

分享到:
评论

相关推荐

    python项目数据分析--人口普查

    在本项目"Python项目数据分析--人口普查"中,我们将探讨如何使用Python进行数据处理和分析,专注于人口普查数据。这是一个常见的数据分析应用场景,可以帮助我们理解人口结构、社会趋势以及区域发展等重要信息。该...

    数据清洗加评估加整理-项目实战2-评估和清洗和整理电影演员评分数据-ipynb格式-Python语法-建议用Jupyter打开

    用真实的数据(奈飞电影电影公司)用来练习数据清洗加评估加整理,整个流程特别清晰,从开始的分析目标到简介到读取数据,每一步都给出了清晰的代码以及相应的数据集,学习的第1步是学会模仿,只需要先模仿,理解其...

    软件项目数据分析基本方法(IT项目管理专家-曹济).pdf

    统计建模方法介绍是软件项目数据分析的进阶部分,它涉及利用统计模型来分析项目数据。统计建模通过历史数据建立数学模型,然后利用该模型对未来项目的关键指标进行预测。此类方法能够帮助项目管理团队从历史数据中...

    交通时空大数据分析挖掘系统-数据.rar

    《交通时空大数据分析挖掘系统-数据》是一个专为学生初涉大数据分析领域设计的实践项目。这个项目聚焦于城市公共交通,特别是公交和地铁的出行数据,提供了丰富的信息资源,包括原始数据集和静态数据,使得数据处理...

    50+数据分析项目整理

    以上仅为部分数据分析项目的概述,每个项目都涉及到了不同的领域和技术应用,涵盖了从基础的数据收集到复杂的模型建立等多个环节。这些项目不仅展示了数据分析在各领域的广泛应用,也为从业者提供了丰富的实践经验。

    18-06数据分析中主要不合格改进措施.doc

    数据分析是企业决策、优化运营和提升效率的关键工具。在实际操作中,可能会遇到各种不合格的情况,这会影响数据的准确性和有效性。"18-06数据分析中主要不合格改进措施.doc" 文件显然是一份针对此类问题的文档,旨在...

    Excel实现Python数据分析项目数据和源码-用户价值

    在这个项目中,"Excel实现Python数据分析项目数据和源码-用户价值.xlsx"文件很可能包含了原始数据集,可能包括用户ID、消费记录、活跃度等字段。你可以使用Excel进行初步的数据探索,如计算平均消费、用户活跃天数等...

    qfedu-python-数据分析-金融信用风险评估项目

    在本项目"qfedu-python-数据分析-金融信用风险评估项目"中,我们将深入探讨如何利用Python进行金融信用风险评估。这个项目旨在教你如何运用数据分析技术处理金融领域的信用风险问题,帮助你理解并掌握相关技能。以下...

    第12章-项目数据分析报告.ppt

    【项目数据分析报告】是企业在项目执行过程中为了评估和优化项目执行效果而进行的一种系统性的分析活动,旨在通过数据收集、整理、分析,为企业决策提供科学依据。报告的质量直接影响到决策的准确性,因此编制报告时...

    Multi-feature-power-数据分析demo

    标题中的"Multi-feature-power-数据分析demo"表明这是一个关于多特征电力数据分析的示例项目,可能包含使用多种数据特性进行电力负荷预测的实例。这个项目可能是为了展示如何利用深度学习技术来处理复杂的电力系统...

    我的项目源码-公务数据

    2. 数据分析:运用统计学方法,如描述性统计、回归分析等,理解公务数据的特征和规律。 3. 数据可视化:使用Matplotlib、Seaborn、Plotly等工具创建图表,帮助理解数据和结果。 4. 数据库操作:通过SQL语句与MySQL、...

    eSeis-QC数据的自动化整理-陈龙.pdf

    通过使用 Python 实现 eSeis QC 数据的自动化整理,我们可以极大地提高 eSeis 节点 QC 数据的整理速度,使得管理人员能够及时地得到野外节点 QC 数据,保障项目正常运行。 在本文中,我们还将讨论 eSeis 节点仪器的...

    python数据分析-数据下的奥运百年-Kaggle数据研究

    数据分析师需要整理出历届奥运会各国的奖牌总数和名次,可能还会使用数据透视表来按国家汇总数据。 - 运动员成就分析可能需要更详细的数据集,例如每个运动员在不同项目中的成绩,以及他们在各届奥运会的表现。 - ...

    python项目开发实战_Excel数据分析师-pandas+matplotlib_编程案例实例详解课程教程.pdf

    例如,M淘宝电商积累了大量的历史数据,日常工作涉及的数据整理,以及从网页爬下来的数据也只是第一步,最终的数据分析才是重点,或者由于工作需要将多个Excel表合成一个 Excel表等,这些工作都需要大量的时间和人力,那么...

    离线数据分析项目-电商网站日志项目

    在这个名为“离线数据分析项目-电商网站日志项目”的实践中,我们将重点探讨如何利用Hadoop、Hive、HBase以及MapReduce(MR)技术进行大规模数据的处理和分析,并最终将结果存储到MySQL数据库中。 首先,Hadoop是...

    Excel实现Python数据分析项目数据和源码-用户画像

    在这个“Excel实现Python数据分析项目数据和源码-用户画像”中,我们将探讨如何利用Excel作为数据预处理工具,以及Python作为数据分析主力,来构建用户画像。 首先,用户画像(User Profile)是通过收集、整合和...

    python项目源码-开心麻花影视作品分析的程序.rar

    综上所述,这个项目涵盖了Python编程、数据抓取(可能包括BeautifulSoup或Scrapy框架)、数据处理(pandas和numpy库)、数据分析(可能涉及matplotlib或seaborn进行可视化)、以及可能的机器学习算法(如线性回归、...

    无人售货机Echarts数据分析

    这些数据的收集和整理是数据分析的基础。 接下来,我们可以利用Echarts的各种图表来分析这些数据: 1. **折线图**:用于显示销售趋势,例如每日、每周或每月的销售量变化,帮助识别销售高峰期和低谷期,以便调整...

Global site tag (gtag.js) - Google Analytics