zoukankan      html  css  js  c++  java
  • Centos8.3、hadoop-2.6.4 简单的日志分析实验

    引言  前段时间答应朋友做一个hadoop分析日志的教程,说完就后悔了,我已经很久没碰它了,为了实现这个承诺不得以又把以前买的书找出来研究一下。值得庆幸的是以前的笔记还在不需要我从头再来。不过搭建hadoop的环境很复杂,我也不准备做从零开始的教程,我准备把我搭建好的环境直接搬过来了,这样不用纠结环境搭建的复杂,也不需要了解Map/Reducer编程就可以直接体验一下hadoop的魅力。

    环境准备 

    序号 环境和数据 版本 下载地址
    1 CentOS-8.3.2011-x86_64-minimal.iso 8.3

    链接: https://pan.baidu.com/s/1kWRffCoup2Oxat953ZAe5w 提取码: ml2e

    2 hadoop-2.6.4.tar.gz 2.6.4

    链接: https://pan.baidu.com/s/1A_fqViL62xrZ6rnA1M8nYQ 提取码: nfna

    3 jdk-7u80-linux-x64.rpm 1.7

    链接: https://pan.baidu.com/s/1sGneDO4jcfk5ZlbOLVZVpA 提取码: 5nmj

    4 access.txt  

    链接: https://pan.baidu.com/s/1aKlVcXrrWo5kEmoWa7DD8Q 提取码: 5bgu

    注意:请一定使用以上的地址下载的,不然可能出现很多未知的问题。hadoop-2.6.4.tar.gz 配置文件是我改过的,access.txt 是用来测试的tomcat日志数据。

    第一步 使用虚拟机软件安装操作系统(没有装过的同学可以去补下课,这里就不讲了)

    第二步 操作系统安装好后,先关闭防火墙顺便安装一下vim,具体操作如下:

    systemctl stop firewalld.service     #停止firewall
    systemctl disable firewalld.service  #禁止firewall开机启动
    yum -y install vim #安装vim

    第三步 使用上面的下载地址下载jdk1.7上传到刚才创建的centos8.3虚拟机使用命令安装(这里一定要使用rpm安装因为这个安装目录是固定的)安装目录为/usr/java/jdk1.7.0_80  这个jdk的目录已经被我写在hadoop配置中。安装命令如下

    rpm -ivh jdk-7u80-linux-x64.rpm #rpm 安装jdk

    java -version #查看安装是否成功

    第四步 使用上面地址下载hadoop-2.6.4.tar.gz(注意这个包基本配置都是配置好的,不需要做调整的) 包 然后解压到 /usr/local 目录下 解压命令如下

    tar -zxf hadoop-2.6.4.tar.gz -C /usr/local

    第五步 编辑 /etc/profile 文件添加内容如下

    vim /etc/profile # 打开文件编辑
    
    # 在文件尾部追加以下内容
    export JAVA_HOME=/usr/java/jdk1.7.0_80
    export JRE_HOME=$JAVA_HOME/jre
    export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/jre
    export HADOOP_HOME=/usr/local/hadoop-2.6.4/bin
    export PATH=$PATH:$HADOOP_HOME

    source /etc/profile #保存文件后执行 

    完成后 执行 hadoop 或者hdfs 命令看看是否成功 正确结果如

    第六步 关闭虚拟机然后克隆一台实例(这里做实验克隆一台就够了)

    克隆完成修改实例名称 第一台实例hostname 更改为master 第二台实例更改为slave1 如下图:

    vim /etc/hostname #编辑实例名称
    
    reboot            #重启boot

    第七步 配置ssh 无密钥访问

    1.在master实例执行

    ssh-keygen -t rsa

    注意这里所有输入直接回车

    2.在slave1实例执行(同上所有输入直接回车)

    ssh-keygen -t rsa

    注意 slave1实例上我们cd 到/root/.ssh/ 目录 使用ls命令查看 有两个文件分别是 id_rsa 和 id_rsa.pub 我们拷贝id_rsa.pub 文件并且重新命名为slave1 然后复制slave1文件到master实例上 命令如下

    cd /root/.ssh/                                 #跳转到/root/.ssh目录
    cp id_rsa.pub ./slave1                         #复制 id_rsa.pub文件并且重名命为slave1
    scp ./slave1 root@172.16.102.15:/root/.ssh/    #将slave1文件复制到master实例/root/.ssh/目录下  注意 (1).要输入yes 和 master实例的密码。(2)172.16.102.15 这个是master实例的ip根据自己master实际ip修改

    如下图:(图片这里master ip地址写错了 应该是172.16.102.15 而不是16)

    然后我们来到master实例同样到/root/.ssh 目录下合并master实例的id_rsa.pub 文件和slave1实例复制过来的文件并且命名为 authorized_keys 命令如下:

    cd /root/.ssh/
    cat id_rsa.pub slave1 >>authorized_keys                   #合并master和slave1的密钥文件
    scp ./authorized_keys root@172.16.102.16:/root/.ssh       #复制合并后的文件到slave1实例  注意 172.16.102.16 是slave1的ip要根据自己实际的ip修改命令

    操作如下图:

     测试效果 

      第八步 编辑/etc/hosts文件 如下图

     

    注意这两个ip要改成自己实际的ip 然后同步host文件到其他实例 这里我是在master实例上编辑的所以需要同步到slave1实例。 执行如下命令:

    scp /etc/hosts slave1:/etc/hosts

    第九步 编辑 master实例子中 hadoop的slave文件 文件位于 /usr/local/hadoop-2.6.4/etc/hadoop 编辑内容很简单之前在slave中我配置了三台slave实例现在只有一台 删除另外两个配置就好 结果如下

    第十步 格式化节点 在master、slave实例分别执行 

     hdfs namenode -format

    执行结果如下:

     

    第十一步 尝试启动hadoop 我们来到master实例  /usr/local/hadoop-2.6.4 目录下执行 ./start_hadoop.sh 脚本 正确结果如下

     在master实例执行jps命令测试正确结果如下

     在slave1实例上测试正确结果如下

     第十二步访问管理界面 

    修改自己本机器的hosts文件 添加

    172.16.102.15 master
    172.16.102.16 slave1

    http://master:50070/dfshealth.html#tab-overview

    http://master:8088/cluster

    http://master:19888/jobhistory

    http://master:50070/nn_browsedfscontent.jsp  本次实验主要使用的是这个地址

    访问后界面如下

    到这环境终于准备好了,即使我是复制之前搭建的环境,还是有点复杂。现在我们开始准备日志分析。

    第一步上传日志文件到master实例然后在上传到hdfs  上传文件到hdfs需要先hdfs文件夹 创建和上传命令如下

    hdfs dfs -mkdir /aiatt                    #创建aiatt文件夹
    hdfs dfs -put ./access.txt /aiatt #上传access 日志文件到hdfs文件系统 aiatt目录下

    操作结果如下:

     然后我们刷新  http://master:50070/nn_browsedfscontent.jsp  页面查看结果

     现在我们开始执行Map/Reduce 任务任务如下:

     这段日志是某个tomcat的请求记录日志,现在我们想要的结果是计算出每个请求请求的频率 然后针对有请求频率过高的接口做优化或者缓存。针对这个任务的MapReduce我也已经写好了 直接下载 

    链接: https://pan.baidu.com/s/1Wu6uDSBBZK9Wsaue1kmWXQ 提取码: obw5
    然后上传到master实例执行一下命令 

    hadoop jar ./aiatt.jar /aiatt/access.txt /aiatt/output/result
    /aiatt/access.txt 是输入的文件地址   /aiatt/output/result 输出结果地址
    这个两个地址都是hdfs 的地址 另外要注意重复执行任务输出地址不能一致,不然会报错。执行结果如下图:

     

     最后我们刷新 刚才的hdfs文件查看的地址查看计算结果

     到这里就结束了 这个实验主要是想让未接触过hadoop的体验一下,如果真的想学习的话推荐 《Hadoop大数据开发基础》这本书 ,我就是看这本书自学的,虽然这本书有几个小错误但是还是不错的入门书

  • 相关阅读:
    Lucene.Net
    关于数据库优化问题总结
    网页幻灯片效果
    ASP.NET邮件发送
    【收藏】悟透JavaScript(李战)
    JS之显示、隐藏控件方法
    初学自定义验证码
    js之判断浏览器类型及版本号
    js清空上传控件的值
    vs2008学习之路
  • 原文地址:https://www.cnblogs.com/jishuzhaichen/p/15177236.html
Copyright © 2011-2022 走看看