大数据计算
实时计算:flume+kafka+storm/sparkstreaming+redis/hbase
离线计算:flume/ftp/sqoop(获取数据)+hdfs(存储数据)+hive(数据仓库)+SparkSQL(进行数据离线计算)+sqoop+mysql/hbase/redis(计算后的数据存储)
Flume采集实现
1、在若干个服务器上部署agent节点,修改配置文件
2、启动agent节点,将采集到的数据汇聚到指定的HDFS目录中
使用pyspark进行spark-submit
实验环境:
1.pyspark 1.6.0
2.python 2.7
本次主要写的是用pyspark提交任务时,需要注意的地方及遇到的问题的解决。
Step 1. 提交python工程
在提交spark的时候,我们往往python工程是多个python文件,彼此之间有调用关系。
那如何提交python工程呢?
./bin/spark-submit –py-files XXXX.zip aaa.py即可
XXXX是你将你所有需要用到的python文件打包成一个zip文件
aaa是你的python文件的main函数所在的py文件。
Step 2. python 版本问题不一致
提交以后,我遇到了cannot different version python 2.6 in driver and python 2.7….
大概是这样的错误,是说不同节点的python版本不一致,导致的运行错误。
解决方法:
import os
os.environ['PYTHONPATH']='python2'
Step 3. 提交任务以后,遇到ascii编码问题
其实我们是想要utf-8默认运行python的,但是就算你在文件里指定了
#coding:utf-8
依然没用。
解决方法:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
数据处理流程:
1.数据采集
Flume:web日志写入到HDFS
2.数据清洗
脏数据
Spark,Hive,MapReduce或者其他一些分布式计算框架,清洗完之后的数据可以存放在HDFS(Hive,Spark SQL)
3.数据处理
按照需求进行相应业务的统计和分析
Spark,Hive,MapReduce或者其他一些分布式计算框架
4.处理结果入库
结果可以存放到RDBMS,NoSQL,调用相应的API就可以实现。
5.数据的可视化
通过图形化展示的方式展现出来:饼图,柱状图,地图,折线图(ECharts,HUE,Zeppelin)
开发环境版本:
Anaconda2-4.2.0(Windows 64和Linux 64位)
pycharm-community-2016.2.3
Python-2.7.9
spark-1.6.1-bin-2.5.0-cdh5.3.6
hadoop-2.5.0-cdh5.3.6
hive-0.13.1-chd5.3.6