大数据环境搭建
in Hadoop with 0 comment

大数据环境搭建

in Hadoop with 0 comment

大数据

什么是大数据?

简单来说大数据就是海量数据及其处理。

大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产(资源)。

在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》 [2] 中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。——摘自百度百科

为什么要学习大数据?

拓宽发展面

大数据已经成为基础技术,现在最火的人工智能,物联网等就建立在大数据的基础上。

面向面试,提高认知深度,拓宽知识广度,增加面试筹码,提高薪资。

大数据相关技术

海量数据获取

爬虫(分析别人家的事):Python,java…

日志(分析自己的事):log4j、flume(数据的收集聚集加载)

历史数据(分析以前的事):mysql、oracle、ETL(数据的提取转化加载)

海量数据存储

HDFS(Hive、Hbase、Spark依赖存储都是HDFS)Hadoop distributed file system

S3(亚马逊)

NFS(sun公司)

海量数据清洗

数据清洗没有我们想的那么复杂,方式有很多:

过程中可以用代码直接清洗,flume可以清洗,Hive可以清洗,flink可以清洗。整个流程中几乎每个步骤都可以做到数据的清洗。

海量数据处理

离线数据处理:MapReduce(hadoop的一部分)、Hive(底层是MR,业界主流)、SparkSQL、FlinkDataSet

流式数据处理:Flink(全面高效)、Storm(速度快,亚秒级)、SparkStreaming(速度没有Storm快,但是吞吐量高)

网站日志分析系统

数据收集:JS埋点

img

传统埋点方式的缺点:

直接嵌入业务系统,代码不好维护,影响业务系统性能。

img

JS埋点优点:

日志收集系统与业务系统相互独立,互不影响,不占用业务系统性能,能收集到更多更详细的用户信息。

日志数据的提交方式

Get请求:https://www.jd.com/?cu=true&utm_source=baidu-pinzhuan&utm_medium=cpc&utm_campaign=t_288551095_baidupinzhuan&utm_term=0f3d30c8dba7459bb52f2eb5eba8ac7d_0_bd79f916377147b6aef8164d97d9abac

在哪里发起Get请求?

跨域请求

img标签中src实现跨域访问,将该图片插入到真个页面最后,像素1,边框0,用户看不到。

系统架构设计

img

离线分析:js埋点——日志收集系统(log4j)——flume——HDFS——Hive

实时分析:js埋点——日志收集系统(log4j)——flume——Kafka——Flink

项目搭建

将项目导入指定的eclipse中

部署方式视频连接:

链接:https://pan.baidu.com/s/1jVIrDQGULPEGP0EjBktPKg
提取码:8y5q

集群环境准备

准备虚拟机

克隆三个虚拟机hadoop01、hadoop02、hadoop03均为NAT模式,其中hadoop01内存设置为1G(16G内存以上建议设置为2G),hadoop02和hadoop03为512M。

修改为静态IP

修改配置文件

cd /etc/sysconfig/network-scripts   #进入网络配置目录
dir ifcfg*                         #找到网卡配置文件
ifcfg-ens33                         #找到版本最新的文件并修改
vim ifcfg-ens33
或者
vim /etc/sysconfig/network-scripts/ifcfg-ens33

配置文件内容

注意不要写注释部分

TYPE=Ethernet
BOOTPROTO=static                              #改成static,针对NAT
NAME=eno16777736
UUID=4cc9c89b-cf9e-4847-b9ea-ac713baf4cc8
DEVICE=eno16777736
DNS1=114.114.114.114     #和网关相同
ONBOOT=yes               #开机启动此网卡
IPADDR=192.168.65.161    #固定IP地址
NETMASK=255.255.255.0    #子网掩码
GATEWAY=192.168.65.2     #网关和NAT自动配置的相同,不同则无法登录

重启网络

以下两种方式任选其一

service network restart   #重启网络
systemctl restart network.service   #重启网络centos7

查看IP

ip addr                  #查看IP地址 ip add

关闭防火墙

systemctl stop firewalld.service        #关闭防火墙服务
systemctl disable firewalld.service     #禁止防火墙开启启动
systemctl restart iptables.service      #重启防火墙使配置生效
systemctl enable iptables.service       #设置防火墙开机启动

检查防火墙状态

[root@hadoop01 ~]# firewall-cmd --state		#检查防火墙状态
not running									#返回值,未运行

修改hosts文件

vi /etc/hosts

删掉原来所有内容,改为以下

127.0.0.1   localhost
::1          localhost
192.168.65.161 hadoop01
192.168.65.162 hadoop02
192.168.65.163 hadoop03

设置免密登录

每台都执行以下操作

在XShell中的撰写栏(全部会话)任意路径执行:

ssh-keygen

然后三次直接回车不输入任何内容

得到秘钥后执行:

ssh-copy-id root@hadoop01

同样的操作发送至hadoop02、hadoop03

在01测试

ssh hadoop02

不需要输入密码直接进入说明成功,exit退出

安装JDK

/home下创建目录app

mkdir /home/app

上传安装包并发送至其他节点

scp -r /home/app root@hadoop02:/home

解压

tar -xvf jdk-8u65-linux-x64.tar.gz

修改环境变量

vim /etc/profile

在配置文件末尾添加

#set java environment
JAVA_HOME=/home/app/jdk1.8.0_65
JAVA_BIN=/home/app/jdk1.8.0_65/bin
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH

加载环境变量

source /etc/profile

测试

java -version

出现JDK版本号即为成功

复制环境变量到其他两个机器

scp /etc/profile root@hadoop02:/etc

03同理

修改windows中的hosts文件

在windows中的hosts文件里添加如下映射

192.168.65.161 hadoop01

附录:

远程文件传输

scp -r(文件夹)文件路径 root@hadoop02:/目标路径