zoukankan      html  css  js  c++  java
  • 大数据平台核心技术-实验记录)

    一、前言

    学校:许昌学院
    学院:信息工程学院
    实验环境:
    操作系统:Linux (CentOS 6.7) JDK版本:1.8 (8u161) Hadoop版本:2.7.4
    虚拟机:VMware Workstation Pro 15.5
    参考资料:
    Hadoop大数据技术原理与应用
    linux命令大全(手册)
    大数据平台核心技术 樊志伟

    二、实验内容

    实验一 :Hadoop集群搭建

    1. 实验目的

    熟悉常用Linux操作,学会搭建Hadoop集群,为后续上机实验做准备。

    2. 实验环境(推荐)

    操作系统:Linux (CentOS 6.7) JDK版本:1.8 (8u161) Hadoop版本:2.7.4

    3. 实验内容和要求

    (一)熟悉常用Linux操作
    实验内容 使用到的命令
    (1) 切换到目录 /usr/local
    (2) 去到目前的上层目录
    (3) 回到自己的主文件夹
    cd: 切换目录
    (4) 查看目录/usr下所有的文件 ls: 查看文件与目录
    (5) 进入/tmp目录,创建名为a的目录
    (6) 创建目录a1/a2/a3/a4
    mkdir: 新建新目录
    (7) 将主文件夹下的.bashrc复制到/tmp下,命名为bashrc1
    (8) 在/tmp下新建目录test,再复制这个目录到/usr
    cp: 复制文件或目录
    (9) 将第7例文件bashrc1移动到目录/usr/test
    (10) 将第9例test目录重命名为test2
    mv: 移动文件与目录,或更名
    (11) 将以上例子中的bashrc1文件删除 (12) 将第10例的test2目录删除 rm: 移除文件或目录
    (13) 查看主文件夹下的.bashrc文件内容 cat: 查看文件内容
    (14) 在/目录下新建目录test,然后打包成test.tar.gz (15) 将第16例文件解压缩到/tmp目录 tar: 压缩、解压缩命令
    (二)搭建Hadoop集群的前期准备
    实验内容 使用到的命令
    (16) 配置三台虚拟机的网络 vi. ifconfig, reboot, ping, service
    (17) 配置SSH免密码登陆 rpm, grep, ssh-keygen, ssh-copy-id, ssh, exit
    (三)搭建Hadoop集群
    实验内容 使用到的命令
    (18) 安装并配置指定版本的JDK rz, cd, tar, mv, vi, source
    (19) 安装并配置Hadoop集群主节点 rz, tar, vi
    (20) 分发Hadoop至子节点并配置 scp, source
    (21) 格式化HDFS,启动Hadoop集群 hdfs namenode -format, start-dfs.sh

    三、实验过程记录

    2.1安装准备

    1、安装虚拟机
    在这里插入图片描述
    2、创建工作目录:

    mkdir -p /export/data

    mkdir -p /export/software

    mkdir -p /export/servers

    在这里插入图片描述

    3、克隆虚拟机
    在这里插入图片描述

    4、Linux网络配置

    a>配置VM ware
    b>配置主机名 :vi /etc/sysconfig/network
    c>配置IP地址映射:​ vi /etc/hosts

    在这里插入图片描述
    在这里插入图片描述

    5、网络参数配置

    a>配置MAC地址
    ​b>配置静态IP
    c>验证

    在这里插入图片描述

    6、SSH服务配置

    a> 查看是否安装SSH:​ rpm -qa |grep ssh
    b>安装SSH:​ yum install openssh-server
    c>查看SSH服务是否启动:​ ps -e | grep sshd

    在这里插入图片描述

    7、虚拟机免密登录

    在这里插入图片描述

    • 为什么要免密登录

      Hadoop节点众多,所以一般在主节点启动从节点这个时候就需要程序自动在主节点登录到从节点中,如果不能免密就每次都要输入密码,非常麻烦

    • 免密SSH登录的原理

      1.需要先在B节点配置A节点的公钥
      2. A节点请求B节点要求登录
      3. B节点使用A节点的公钥,加密- -段随机文本
      4. A节点使用私钥解密,并发回给B节点
      5. B节点验证文本是否正确

    • 第一步:三台机器生成公钥与私钥

      在三台机器执行以下命令,生成公钥与私钥
      ssh -keygen -t rsa
      执行该命令之后,按下三个回车即可
      在这里插入图片描述

    • 第二步:拷贝公钥到同一台机器

      三台机器将拷贝公钥到第一台机器
      三台机器执行命令: ssh-copy-id hadoop01
      在这里插入图片描述

    • 第三步:复制第一台机器的认证到其他机器

      将第一台机器的公钥拷贝到其他机器上
      在第一天机器上面指向以下命令
      scp /root/.ssh/authorized_ keys hadoop02:/root/.ssh

      scp /root/.ssh/authorized_ keys hadoop03:/root/.ssh
      在这里插入图片描述

    2.2 Hadoop集群搭建

    1、安装文件上传工具

    安装命令:yum install lrzsz -y
    
    使用命令:rz
    

    2、JDK安装

    • 下载JDK

    https://www.oracle.com/technetwork/java/javase/downloads/index.html

    • 查看当前系统自带jdk并卸载:

    注:参考:here

    rpm -qa | grep java
    

    在这里插入图片描述

    然后通过 rpm -e --nodeps 后面跟系统自带的jdk名 这个命令来删除系统自带的jdk,

    例如:
    	rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
        rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64
        rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
        rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
    

    在这里插入图片描述

    删完之后可以再通过 rpm -qa | grep Java 命令来查询出是否删除掉
    在这里插入图片描述

    • 安装JDK
    #上传jdk到/export/software路径下去,井解压
    
    tar -zxvf jdk-8u161-linux-x64.tar.gz -C /export/servers/
    
    mv jdk1.8.0_161 jdk
    
    • 配置JDK环境变量
    vi /etc/profile
    
    添加以下内容:
    
    export JAVA_HOME=/export/servers/jdk
    
    export PATH=$PATH:$JAVA_HOME/bin
    
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    修改完成之后记得source /etc/profle生效
    
    source /etc/profile
    
    • JDK环境验证
    java -version
    

    3、Hadoop安装:

    • 下载Hadoop安装包

    http://archive.apache.org/dist/hadoop/common/

    • 解压安装Hadoop
    #将hadoop-2.7.4. tar.gz包上传到/export/software日录
    
    cd /export/softwares
    
    tar -zxvf hadoop-2.7.4.tar.gz -C /export/servers/
    
    • 配置
    export HADOOP_HOME=/export/servers/hadoop-2.7.4
    
    export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    

    修改完成之后记得source /etc/profle生效

    source /etc/profile

    • 验证Hadoop环境
    hadoop version  
    

    4、Hadoop集群配置

    进入目录

    cd /export/servers/hadoop-2.7.4/etc/hadoop

    4.1 配置Hadoop集群主节点

    • 修改hadoop-env.sh

      export JAVA_HOME=/export/servers/jdk

    • 修改core-site.xml

      <configuration>
      
      ​    <property>
      
      ​        <name>fs.defaultFS</name>
      
      ​        <value>hdfs://hadoop01:9000</value>
      
      ​    </property>
      
      ​    <property>
      
      ​        <name>hadoop.tmp.dir</name>  
      
      ​        <value>/export/servers/hadoop-2.7.4/tmp</value>
      
      ​    </property>
      
      </configuration>
      
    • 修改hdfs-site.xml

      <configuration>
      
      ​    <property>
      
      ​        <name>dfs.replication</name>
      
      ​         <value>3</value>
      
      ​    </property>
      
      
      ​    <property>
      
      ​        <name>dfs.namenode.secondary.http-address</name>
      
      ​        <value>hadoop02:50090</value>
      
      ​    </property>
      
      </configuration>
      
    • 修改mapred-site.xml

      cp mapred-site.xml.template mapred-site.xml

      <!-- Put site-specific property overrides in this file. -->
      
      <configuration>
      
      ​    <!--指定MapReduce运行时框架, 这里指定在Yarn上,默认是local -->
      
      ​    <property>
      
      ​        <name>mapreduce.framework.name</name>
      
      ​        <value>yarn</value>
      
      ​    </property>
      
      </configuration>
      
    • 修改yarn-site.xml

      <configuration>
      
      ​    <!-- Site specific YARN configuration properties -->
      
      ​    <property>
      
      ​        <name>yarn.resourcemanager.hostname</name>
      
      ​        <value>hadoop01</value>
      
      ​    </property>
      
      ​    <property>
      
      ​        <name>yarn.nodemanager.aux-services</name>
      
      ​        <value>mapreduce_shuffle</value>
      
      ​    </property>
      
         	 <!-- 2020.5.2更新:设置内存 -->
            <property>
                
                <name>yarn.nodemanager.resource.memory-mb</name>
                
                <value>1600</value>
            
            </property>
            
            <!-- 设置cpu 核数 -->
            
            <property>
            
                <name>yarn.nodemanager.resource.cpu-vcores</name>
            
                <value>1</value>
            
            </property>
      
      </configuration>
      
    • 修改slaves文件。打开该配置文件,先删除里面的内容(默认localhost) ,然后配置如下内容。

      hadoop01
      
      hadoop02
      
      hadoop03
      

    4.2 将集群主节点的配置文件分发到其他子节点

    scp /etc/profile hadoop02:/etc/profile
    
    scp /etc/profile hadoop03:/etc/profile
    
    scp -r /export/ hadoop02:/  
    
    scp -r /export/ hadoop03:/  
    
    在hadoop02和hadoop03上执行:source /etc/profile
    

    2.3Hadoop集群测试

    1、格式化文件系统

    初次启动HDFS集群时,必须对主节点进行格式化处理。

    格式化文件系统指令如下:

     $ hdfs namenode -format
    
     $ hadoop namenode -format
    

    2、启动和关闭Hadoop集群

    • 单节点逐个启动和关闭

      • 在主节点上执行指令启动/关闭HDFS NameNode进程;

        hadoop-daemon.sh start namenode
        
      • 在每个从节点上执行指令启动/关闭HDFS DataNode进程;

          hadoop-daemon.sh start datanode
        
          #使用jps查看java进程验证
        
          jps
        

        在这里插入图片描述

      • 在主节点上执行指令启动/关闭YARN ResourceManiger进程;

         yarn-daemon.sh start resourcemanager
        
      • 在每个从节点上执行指令启动/关闭YARN nodemanager进程;

         yarn-daemon.sh start nodemanager
         #使用jps查看java进程验证
        
         jps
        

        在这里插入图片描述

      • 在节点hadoop02执行指令启动/关闭SecondaryNameNode进程。

          hadoop-daemon.sh start secondarynamenode
        
      • 关闭只需将start 换成stop
        在这里插入图片描述

    • 脚本一键启动和关闭

    1. 在主节点hadoop01上执行指令“start-dfs.sh”或“stop-dfs.sh”启动/关闭所有HDFS服务进程;
    1. 在主节点hadoop01上执行指令“start-yarn.sh”或“stop-yarn.sh”启动/关闭所有YARN服务进程;
    1. 在主节点hadoop01上执行“start-all.sh”或“stop-all.sh”指令,直接启动/关闭整个Hadoop集群服务。

    3、通过UI查看Hadoop运行状态

    Hadoop集群正常启动后,它默认开放了两个端口50070和8088,分别用于监控HDFS集群和YARN集群。通过UI界面可以方便地进行集群的管理和查看,只需要在本地操作系统的浏览器输入集群服务的IP和对应的端口号即可访问。

    	1) 配置IP映射:
    	
    	  打开:C:WindowsSystem32driversetchosts
    	
    	  添加以下内容:
    	
    	  192.168.121.134 hadoop01
    	
    	  192.168.121.135 hadoop02
    	
    	  192.168.121.136 hadoop03
    	
    	2) 关闭防火墙:service iptables stop
    	
    	3) 关闭防火墙开机启动:chkconfig iptables off
    

    在这里插入图片描述

    在Windows系统下,访问http://hadoop01:8088,查看Yarn集群状态,且从图中可以看出Yarn集群状态显示正常。
    在这里插入图片描述
    注:点击左侧Nodes,看到以下页面,一般配置就正确了

    在这里插入图片描述

    2.4Hadoop集群初体验

    Hadoop经典案例——单词统计

    • 打开HDFS的UI界面,查看HDFS中是否有数据文件,默认是没有数据文件。
      在这里插入图片描述

    • 准备文本文件,在Linux系统上编辑一个文本文件,然后上传至HDFS上。

      创建数据存储目录:mkdir -p /export/data

      编辑文件:vi word.txt

      写入一些单词:

      hello itcast

      hello itheima

      hello Hadoop

      在hdfs上创建目录:hadoop fs -mkdir -p /wordcount/input

      在这里插入图片描述

      将文件上传至hdfs 的目录:hadoop fs -put /export/data/word.txt /wordcount/input

      在这里插入图片描述

    • 运行hadoop-mapreduce-examples-2.7.4.jar包,实现词频统计。

      进入:cd /export/servers/hadoop-2.7.4/share/hadoop/mapreduce

      执行:hadoop jar hadoop-mapreduce-examples-2.7.4.jar wordcount /wordcount/input /wordcount/output
      注:执行该步时出错,(一直为接受状态,没有运行;有大佬请解答!)如下图:(已解决!)
      在这里插入图片描述
      成功界面:
      在这里插入图片描述

    • 查看UI界面,Yarn集群UI界面出现程序运行成功的信息。HDFS集群UI界面出现了结果文件。

      在这里插入图片描述

    四、遇到的问题

    1、jdk安装成功,却使用的系统自带jdk

    参考本文:jdk安装 --->查看当前系统自带jdk并卸载:
    注:参考:here

    2、无法启动 NodeManager

    本机配置不满足,修改yarn-siet.xml文件.添加下面内容:

        <!-- 设置内存 -->
        <property>
            <name>yarn.nodemanager.resource.memory-mb</name>
            <value>1600</value>
        </property>
        <!-- 设置cpu 核数 -->
        <property>
            <name>yarn.nodemanager.resource.cpu-vcores</name>
            <value>1</value>
        </property>
    

    注:参考:here

    3、执行词频统计一直处于接受,未运行

    属于服务未全部启动,请确保下图服务启动:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    更新日期:2020.5.2

  • 相关阅读:
    Educational Codeforces Round 86 (Rated for Div. 2) D. Multiple Testcases
    Educational Codeforces Round 86 (Rated for Div. 2) C. Yet Another Counting Problem
    HDU
    HDU
    HDU
    HDU
    Good Bye 2019 C. Make Good (异或的使用)
    Educational Codeforces Round 78 (Rated for Div. 2) C. Berry Jam
    codeforces 909C. Python Indentation
    codeforces1054 C. Candies Distribution
  • 原文地址:https://www.cnblogs.com/YSHR-K/p/12835077.html
Copyright © 2011-2022 走看看