大数据介绍
1.数据流转流程:
数据采集-->数据存储-->数据计算-->数据分析-->数据展示
2.实时,离线数据分析系统
按照数据分析的时效性,通常会把大数据分析系统分成实时系统和离线系统两种;实时系统对数据的实时要求非常高,而离线系统相对来说,实时性要求不高
3.js自调用匿名函数
格式: (function(){})()
eg: (function(x){
alert(x);
})("hello ");
15
数据的采集
1.数据采集的流程:
项目下的所有网页,都会被布置埋点代码;当dom树加载到埋点代码,埋点代码会生成script标签,并异步引入
ma.js脚本文件,而ma.js引入完成就会开始收集当前html页面的信息,并拼接为字符串;最后收集完成后,ma.js向
后端请求一张1*1px的图片,并在图片url后拼接收集到的信息,服务器端接收到请求,对请求url
处理保存,并相应空白图片给浏览器,完成数据收集
2.ajax跨域解决方案:
javascript请求后端的数据收集脚本后发送收集的数据,通常发送的是ajax请求,而使用ajax请求就难免发
生跨域问题;而html规范中,image的跨域是允许的(crossorign属性),因此通常将发送收集到数据的请求伪
装成请求一张gif图片
3.nginx收集数据局限性解决方案:
nginx会自动收集客户端访问信息,并将信息保存到logs/access.log文件中,但是nginx默认收集的数据非
常有限,因此需要将Lua脚本小程序嵌入到nginx服务器中,通过ngx_lua模块集成了Lua,从而在conf/nginx.conf文件中通过Lua来完成业务

##### index.html
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>welcom to hadoop</title>
<script type="text/javascript">
//如果_map为null,那么就将[]赋值给_map
var _maq = _maq || [];
//设置当前的账户名为AllenWoon
_maq.push(['_setAccount', 'AllenWoon']);
//自调用匿名函数,当函数加载完成会自动执行函数中的代码
(function() {
var ma = document.createElement('script');
ma.type = 'text/javascript';
ma.async = true;
//请求ma.js文件
ma.src = 'http://192.168.255.128/ma.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ma, s);
})();
</script>
</head>
<body>
<h1 align="center">黑马程序员--云计算大数据</h1>
</body>
</html>

ma.js
(function () {
var params = {};
if(document) {
params.domain = document.domain || '';
params.url = document.URL || '';
params.title = document.title || '';
params.referrer = document.referrer || '';
}
if(window && window.screen) {
params.sh = window.screen.height || 0;
params.sw = window.screen.width || 0;
params.cd = window.screen.colorDepth || 0;
}
if(navigator) {
params.lang = navigator.language || '';
}
if(_maq) {
for(var i in _maq) {
switch(_maq[i][0]) {
case '_setAccount':
params.account = _maq[i][1];
break;
default:
break;
}
}
}
var args = '';
for(var i in params) {
if(args != '') {
args += '&';
}
args += i + '=' + encodeURIComponent(params[i]);
}
var img = new Image(1, 1);
img.src = 'http://192.168.255.128/log.gif?' + args;
})();