1. 用户行为日志
1.1 埋点
- 代码埋点
 - 可视化埋点
 - 全埋点
 
1.2 用户行为日志内容
- 页面浏览记录:基本信息=
用户信息(uuid, 设备ID)、时间信息、地理位置信息、设备信息、应用信息、渠道信息、页面信息。- 动作记录:基本信息+动作目标信息。
 - 曝光记录:基本信息+曝光对象相关信息,包括对象类型。
 
 - 启动记录:基本信息+启动类型+开屏广告信息
 - 错误记录:应用过程的报错信息
 
2. 安装搭建虚拟机
2.1 模版虚拟机base
- 最小化安装
 - 必要软件安装
 - 修改IP为静态
 - 修改主机名和Hosts文件
 - 关闭防火墙
 - 创建一个普通用户, 配置sudo权限
 - 创建opt目录下两个目录,并修改所属组和所属人
- module : 安装好的软件
 - software:软件安装包
 
 
2.2 克隆三台虚拟机
- 修改主机名 
sudo vim /etc/hostname - 修改IP地址 
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33 - 编写集群分发脚本xsync, 脚本放置在home/atguigu/bin路径下,之后分发该文件到其他虚拟机。
 
            
            
              shell
              
              
            
          
          #!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
    echo ====================  $host  ====================
    #3. 遍历所有目录,挨个发送
    for file in $@
    do
        #4. 判断文件是否存在
        if [ -e $file ]
            then
                #5. 获取父目录
                pdir=$(cd -P $(dirname $file); pwd)
                #6. 获取当前文件的名称
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done
        该脚本分发环境变量时会出现问题,出现Permission denied错误。原因是无法发送root用户的文件,如果使用sudo后会出现找不到命令异常。原因是root用户对应的环境变量没有/home/atguigu/bin这个路径。为了解决该问题,需要给root用户也配置xsync的环境变量路径。而/usr/bin路径是root用户和atguigu用户共有的环境变量路径。因此,只需
sudo cp /home/atguigu/bin/xsync /usr/bin路径下即可。
- 配置SSH免密登录
总共需要配置4次,102、103、104的atguigu用户和102的root用户都需要配置。也可以使用分发ssh目录的方式将配置简化为2次,但是有一定的风险,如果破解了hadoop102的密钥,即可远程登录所有主机。- hadoop102上生成公钥和私钥
ssh-keygen -t rsa - 分发公钥和私钥 xsync .ssh/
 - 切换为root用户后配置root用户的免密登录
 - 分发root用户.ssh文件到其他主机
 
 - hadoop102上生成公钥和私钥
 - 安装JDK,配置环境变量,在
/etc/profile.d/myenv.sh里面配置,使环境变量对登录用户和非登录用户都生效。ssh hadoop103就是非登录用户命令。创建好后,使用source myenv.sh命令使环境变量生效。 
3. 安装hadoop
3.1 步骤
- 解压压缩包,修改文件名为hadoop
 - 添加环境变量HADOOP_HOME
 - 分发环境变量,并source使其生效
 - 搭建原则:老大尽可能分开,小弟配置尽可能多的资源。
 - 配置文件:
- core-site.xml:为hive开放代理权限
 - hdfs-site.xml:副本数量改为1
 - yarn-site.xml:
- aux-services: 当map任务结束后,使用aux来响应reduce的数据请求,释放map任务的资源。
 - 容器内存:最大为4G,数值为4096
 - 物理内存和虚拟内存检查,修改为关闭
 - 开启日志聚集和设置日志保留时间
 
 - mapred-site.xml:
- 指定MR运行在yarn调度器上
 - 配置日志落盘
 
 - workers: 指定小弟所在的主机,注意不能有空行和空格。
 
 - 在
NN所在节点进行格式化 hdfs namenode -format, 只能执行该命令一次。 - 在NN节点使用start-dfs.sh来启动Hadoop集群,并使用jpsall脚本查看进程是否正常启动。
 - 在RM节点使用start-yarn.sh来启动yarn资源调度器。
 - 启动历史服务器,
mapred --daemon start historyserver - 在hadoop102:9870和hadoop103:8088和hadoop102:19888来查看集群,yarn任务调度器和历史服务器是否正常启动。
 - 编写群起群关脚本hdp.sh
 
3.2 经验
- 存储多目录
 - 参数调优
- dfs.namenode.handle.count: 并发上限,默认值为10,并发线程个数计算公式为20*ln(集群机器数量)
 - 集群中内存利用率不高时,可以在yarn调节内存上限。
 
 
4. 安装zookeeper
4.1 介绍
给分布式框架提供统一协调服务,主要提供监听功能。使用场景有:
- Hadoop的HA模式,多个NN作为临时节点进行监听,进行备份节点的切换。
 - kafka的配置文件的存储,可以只修改一份文件,其他分布式主机的配置文件会自动同步。
 
4.2 选举机制和监听器原理
- 选举机制:
- 半数机制,超过一般,注意不包括一半时才能选出Leader,因此主机数量一般为奇数个。
 - 自私原则:投票时先投给自己
 - 墙头草原则:数据新旧和myID大小
 
 - 监听器原理:两个线程,connect用来发送;listen用来监听。
 
4.3 步骤
- 解压后修改文件名为zookeeper
 - 配置zoo.cfg文件
- dataDir: 修改为/opt/module/zookeeper/zkData
 - 增加配置参数,第一个端口号用于数据同步,第二个端口号用于选举。
 
 
            
            
              shell
              
              
            
          
          server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888
        - 修改hadoop103, hadoop104主机中的myid内容为3和4
 - 编写群起群关脚本
 
            
            
              shell
              
              
            
          
          #!/bin/bash
case $1 in
"start"){
	for i in hadoop102 hadoop103 hadoop104
	do
        echo ---------- zookeeper $i 启动 ------------
		ssh $i "/opt/module/zookeeper/bin/zkServer.sh start"
	done
};;
"stop"){
	for i in hadoop102 hadoop103 hadoop104
	do
        echo ---------- zookeeper $i 停止 ------------    
		ssh $i "/opt/module/zookeeper/bin/zkServer.sh stop"
	done
};;
"status"){
	for i in hadoop102 hadoop103 hadoop104
	do
        echo ---------- zookeeper $i 状态 ------------    
		ssh $i "/opt/module/zookeeper/bin/zkServer.sh status"
	done
};;
esac