企业级大数据项目开发流程
项目调研:技术?业务?【对业务很了解】
产品经理、非常熟悉业务、项目经理
需求分析:明确做什么 做成什么样子的(做东西不要局限于某个技术)
用户提出来的:显示【实现较为简单】
隐式的需要自己来实现
方案设计
概念设计(模块,模块中有哪些功能点)【国内一般都是后补详细设计也就是设计文档】
详细设计(具体到所有功能的实现,本套系统用哪些技术来搞定,每个功能点涉及到哪些表哪些模块,表的字段方法名接口等都要定义好)
系统设计(能否扩展,能否容错,可不可以定制化,监控告警等等都是这里的)
功能开发【文档代码化】
开发:代码层次
测试【本地环境】:单元测试 CICD【自动测试所有的单元测试,测试没问题后才可以上线】
测试【测试人员的测试】(测试环境)
功能
联调【设计到很多团队的调试】
性能【压力测试,特别是大数据这种,需要调整一些性能资源】
用户【用户测试为试用,主要是用户的体验】
部署上线
试运行【新的和老的系统都在跑,比如新老一块跑两个月,比较两者的稳定性和差异】
正式上线 【灰度 一般一年或者一年半(会可能用到容器docker之类,开箱即用的;比如需要用到一些相同环境的机器)】
后期
还有项目二期,三期,四期,运维保障,功能开发,bug修改【也就是按照之前都流程都走了一遍】
企业级大数据应用分类
数据分析
自研【自己研发的一个平台,基本都是基于开源框架进行二次开发】
商业【】
搜索/爬虫 elk hbase soler luncen
机器学习/深度学习 【数据平台基本都有】
人工智能
离线:批处理
实时:流处理
基于Maven构建大数据开发项目
手动造数据
#coding=UTF-8
import random
import time
search_engine = [
"baidu",
"google",
"biying",
"sougou",
"360",
"xunlei",
"yahu",
]
ip_slices = [132,156,124,10,29,167,143,187,30,46,55,63,72,87,98,168]
http_referers = [
"http://www.baidu.com/s?wd={query}",
"https://www.sogou.com/web?query={query}",
"http://cn.bing.com/search?q={query}",
"https://search.yahoo.com/search?p={query}",
]
country = [
"CN",
"CO",
"CH",
"AE",
"US"
]
level = ["E","W","I","D"]
domain_name = [
"v2.go2yd.com",
"sdf.dslkj.com",
"wert.liyu.com",
"wangwu.liujia.com",
"shabi.com",
"uouo.ojp.com"
]
http_referers = [
"http://v1.go2yd.com/user_upload/{keyword}",
"http://sdf.dslkj.com/user_selct/{keyword}",
"http://wert.liyu.com/user_test/{keyword}",
"http://wangwu.liujia.com/user_upload/{keyword}",
"http://shabi.com/user_de/{keyword}",
"http://uouo.ojp.com/user_upload/{keyword}",
]
keyword_mp4 = [
"1531633977627104fdecdc68fe7a2c4b96b2226fd3f4c.mp4_bd.mp4",
"6244563542345265dfbssb54gr3d4h5v54h4355xg4g4f.mp4_db.mp4",
"4562342652345345bsdbds64gf3h6f4x95g5643ft3t8k.mid",
"2656345557534787rthwjj78rf4g6fe4frt5rf44f5tg4f5tf.www4",
"8969576565675647fgtsrt45thb65675h556543gt46h54n644.mp5"
]
def sample_search_engine():
return random.sample(search_engine,1)[0]
def sample_country():
return random.sample(country,1)[0]
def sample_level():
return random.sample(level,1)[0]
def sample_ip():
slice = random.sample(ip_slices , 4)
return ".".join([str(item) for item in slice])
def sample_domain_name():
return random.sample(domain_name,1)[0]
def sample_http_referers():
if random.uniform(0, 1) > 0.2:
return "-"
ref_str = random.sample(http_referers,1)
key_str = random.sample(keyword_mp4,1)
return ref_str[0].format(keyword=key_str[0])
def generate_log(count = 10):
time_str = time.strftime("%d/%b/%Y:%H:%M:%S", time.localtime())
f = open("/home/hadoop/data/test.log","a+")
while count >= 1:
query_log = '{se}\t{co}\tA\t{le}\t[{local_time} +0800]\t2\t{ip1}\t-\t{ip2}:80\t0\t{dn}\tGET\t{hr}\tHTTP/1.1 - bytes 13869056-13885439/25136186 TCP_HIT/206 112.29.213.35 video/mp4 17168\t{num}\t-:0 0 0 - - - 11451601 - "JSP3/2.0.14" "-" "-" "-" http - 2 v1.go2yd.com 0.002 25136186 16384 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1531818470104-11451601-112.29.213.66#2705261172 644514568'.format(se=sample_search_engine(),co=sample_country(),le=sample_level(),local_time=time_str,ip1