浅谈大数据开发
大数据的技术架构

为什么需要这些技术架构
很多小伙伴还不太了解大数据开发。
没有使用这些框架之前,数据工程师们是如何处理数据的呢?
- 仅使用数据库(关系型mysql、oracle等,非关系型mongo redis等)
- 从业务系统的数据库中查询数据然后生成报表
- 手机端、网页端等各个端口埋点上报数据记录到数据库中
首先是存数据
大数据最核心的特性,就是这个大字。一台机器,甚至很多台机器都无法存储下这些数据。传统的文件系统是单机的,不能横跨不同的机器。
再者就是处理数据
一台机器处理成T上P的数据,也许需要好几天甚至好几周。对于公司来说,是不可忍受的。比如,微博要更新24小时热博,它必须在24小时内跑完这些处理。
大数据特征
- 数据量大:存储量大,增量大TB->PB
-
多样性:
来源多:搜索引擎、社交网络、通话记录、传感器等
格式多:非结构化数据,文本、日志、视频、图片、地理位置等 - 价值密度低:需要在海量的数据中通过数据分析和机器学习才能把有价值的数据挖掘出来
几个重要的概念
在线处理:对于数据的分析结果在时间上有比较严格的要求,则采用在线处理的方式来对数据进行分析。
离线处理:对于数据的分析结果在时间上要求不严格,只是希望得到数据的分析结果,则采用离线处理的方式来对数据进行分析。
数据采集:要进行数据分析,首先我们要去采集数据。数据从哪里采集呢?数据一般来源于系统内部的数据、数据库的数据、日志系统的数据等。
数据清洗:采集来的数据一般都是不规整的,字段缺失或者有错误,如果不对这些数据进行清洗,分析出来的结果就会出现各种异常。
数据分析:对收集来的大量数据用适当的统计分析方法进行分析,加以深入的研究和概括总结,提取出有用的信息并且形成最终的结论。比如,在企业中可以帮助企业更快速的找到问题然后解决问题、也可以帮助企业制定更好的营销策略和战略路线等。
数据可视化:让分析出来的结果更加的清晰,更加的容易理解。
大数据开发VS传统业务开发
传统业务开发:
根据公司业务需求,对数据库的各种增删改查操作。再者要保证线上服务的稳定性。
大数据开发:
主要保证数据的及时性、准确性、稳定性以及容错性,所以会做各种算法。
常用的框架
文件存储:Hadoop HDFS、Tachyon、KFS
离线计算:Hadoop MapReduce、Spark
实时计算:Storm、Spark、S4、Heron
K-V、NOSQL数据库:HBase、Redis、MongoDB
资源管理:YARN、Mesos
日志收集:Flume、Scribe、Logstash、Kibana
消息系统:Kafka、StormMQ、ZeroMQ、RabbitMQ
查询分析:Hive、Impala、Pig、Presto、SparkSQL、Flink
分布式协调服务:Zookeeper
集群管理与监控:Cloudera Manager、Ambari、Ganglia
数据挖掘与机器学习:Mahout、Spark MLLib
数据同步:Sqoop
任务调度:Oozie
总结
该如何学习大数据开发呢?
- Java开发、Python开发
- 熟练操作Linux系统以及Shell脚本编写
- Hadoop(HDFS、MapReduce、Yarn等)
- 离线数据处理(Flume、Hive、Impala、Spark等)
- 实时数据处理(Kafka、Spark Streaming、HBase等)
- ETL(Sqooq、Kettle等)
- 任务调度(Oozie、Azkaaban等)
...
PS:当然还要有数据库和算法功底哈,好的算法和好的sql是高效处理的重要手段。
如果有任何问题,或者有什么想法,随时联系我,大家一起交流,共同进步。
我的邮箱 344185723@qq.com