精华内容
下载资源
问答
  • 网上hadoop测试服务
    千次阅读
    2022-03-21 10:51:36

    Hadoop集群搭建

    1 Hadoop运行模式

    Hadoop运行模式包括:本地模式、伪分布式模式以及完全分布式模式。

    Hadoop官方网站

    Hadoop的运行模式介绍:

    • 本地模式

      hadoop默认安装后启动就是本地模式,就是将来的数据存在Linux本地,并且运行MR程序的时候也是在本地机器上运行

    • 伪分布式模式

      伪分布式其实就只在一台机器上启动HDFS集群,启动YARN集群,并且数据存在HDFS集群上,以及运行MR程序也是在YARN上运行,计算后的结果也是输出到HDFS上。本质上就是利用一台服务器中多个java进程去模拟多个服务

    • 完全分布式

      完全分布式其实就是多台机器上分别启动HDFS集群,启动YARN集群,并且数据存在HDFS集群上的以及运行MR程序也是在YARN上运行,计算后的结果也是输出到HDFS上。

    1.1 本地运行模式

    本地运行模式(官方wordcount)-- 入门(Hadoop的默认的运行模式)

    任务:统计文本中单词出现次数

    1. hadoop-3.1.3文件目录下面创建一个wcinput的文件
    mkdir wcinput
    
    1. wcinput下创建一个word.txt文件
    cd input
    vim word.txt #或者touch word.txt
    

    在文件中输入一些文字内容

    hadoop hadoop
    hdfs hdfs hdfs yarn
    mapreduce
    map reduce
    hdfs yarn
    spark
    
    1. 回到hadoop-3.1.3文件目录下,执行程序
    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount ./input ./output
    
    1. 查看结果
    cat output/part-r-00000
    

    1.2 完全分布式模式

    准备工作:

    1. 准备三台客户机(静态ip、主机名称)
    2. 安装JDK,Hadoop,并配置环境变量
    3. 配置集群
    4. 单点启动
    5. 配置ssh
    6. 群起并测试集群

    1.2.1 准备三台虚拟机

    准备完全分布式需要的机器: hadoop102 hadoop103 hadoop104

    将克隆出来的虚拟机修改静态ip,主机名称。[见 3.2](#3.2 准备hadoop102 机器(通过克隆模板机的方式创建))

    1.2.2 编写集群分发脚本xsync

    scp(secure copy)安全拷贝
    • 定义:scp可以实现服务器与服务器之间的数据拷贝

    • 基本语法:

    scp  -r   $pdir/$fname          $user@hadoop$host:$pdir/$fname
    命令 递归   要拷贝的文件路径/名称     目的用户@主机:目的路径/名称
    
    • 案例实操

    前提:在hadoop102 hadoop103 hadoop104 都创建好的/opt.module /opt/software两个文件目录,并且已经把这两个目录修改为xu1an:xu1an

    sudo chown xu1an:xu1an -R /opt/module /opt/software
    
    • 特点:完全拷贝内容,不做任何比较,如果目的地已有相关内容,它会进行覆盖
    1. hadoop102的数据(jdk、hadoop安装目录同步,环境变量文件)同步到 hadoop103 hadoop104

      (注意需要移除/opt/module/hadoop-3.1.3/share下的doc文件,由于doc文件较大)

      cd /opt/module/hadoop-3.1.3/share
      rm -rf doc
      
    2. 集群分发

      • a. 将hadoop102/opt/module 所有目录拷贝到 hadoop103/opt/module

        scp -r ./* xu1an@hadoop103:/opt/module
        
      • b. 在hadoop104上执行:将hadoop102的内容 拉取到hadoop104的指定位置

        scp -r xu1an@hadoop102:/opt/module/jdk1.8.0_212 /opt/module/
        
      • c.在hadoop103上执行:将hadoop102的内容 发送给 hadoop104

        scp -r xu1an@hadoop102:/opt/module/hadoop-3.1.3 xu1an@hadoop104:/opt/module
        
    rsync远程同步工具

    rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

    rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

    • 基本语法:
    rsync   -av      $pdir/$fname        $user@hadoop$host:$pdir/$fname
     命令  参数选项  要拷贝的文件路径/名称       目的用户@主机:目的路径/名称  
    
    • 选项参数说明
    选项功能
    -a归档拷贝
    -v显示复制过程
    • 特点:速度快,不会对重复文件进行拷贝

    a. 将hadoop102上的/opt/software/jdk-8u212-linux-x64.tar.gz同步给hadoop103

    rsync -av /opt/software/jdk-8u212-linux-x64.tar.gz xu1an@hadoop103:/opt/software/
    

    b. 将hadoop102上的/opt/software/*同步给hadoop103

    rsync -av /opt/software/* xu1an@hadoop103:/opt/software
    

    c.在hadoop104上主动向hadoop102拉取/opt/software/*

    rsync -av xu1an@hadoop102:/opt/software/* /opt/software/
    

    **注意:**rsync 限制同步数据的时候只能有两台机器进行通信。(不能通过第三台机器进行同步数据)

    集群分发脚本
    • 需求:循环复制文件到所有节点的相同目录下

    • 说明:在/home/xu1an/bin这个目录下存放的脚本,xu1an用户可以在系统任何地方直接执行

    1. /home/xu1an/bin目录下创建my_rsync文件

      #可以用echo $PATH查看系统变量
      cd /home/xu1an #此时该目录下并无bin目录,需要创建bin
      echo $PATH #可以发现Linux系统在创建xu1an用户后,为用户添加了/home/xu1an/bin系统变量地址
      mkdir bin
      cd bin
      touch my_rsync
      chmod 744 my_rsync.sh #更改文件权限
      
    2. 在该文件编写如下代码

      #!/bin/bash
      
      #参数预处理
      if [ $# -lt 1 ]
      then
       echo "参数不能为空!!!"
       exit
      fi
      
      #遍历集群中的机器一次分发内容
      for host in hadoop103 hadoop104
      do
        echo "===============$host================"
        #依次分发内容
        for file in $@
        do
         #判断当前文件是否存在
          if [ -e $file ]
          then
           #存在
            #1.获取当前文件目录结构
            pdir=$(cd -P $(dirname $file);pwd)
            #2.获取当前文件名
            fname=$(basename $file)
            #3. 登录目标机器,创建统一的目录结构
            ssh $host "mkdir -p $pdir"
            #4.依次把要分发的文件或者目录进行分发
            rsync -av $pdir/$fname $host:$pdir
          else
           #不存在
           echo "$file文件不存在!!!"
           exit
          fi
        done
      done
      

      测试分发脚本

      my_rsync /home/xu1an/bin/my_rsnyc.sh
      
      1. 集群分发/etc/profile.d/my_env.sh

        由于etc目录下需要root用户权限才能操作。在hadoop102中分发my_env.shhadoop103

        scp -r /etc/profile.d/my_env.sh root@hadoop103:/etc/profile.d  #输入root用户的密码
        

        hadoop103中需要激活该脚本

        source /etc/profile
        

        查看是否生效

        java -version
        hadoop version
        

    2.3 hadoop集群部署配置

    2.3.1 集群部署规划

    	hadoop102    namenode           datanode    nodemanager
    	
    	hadoop103    resourcemanager    datanode    nodemanager
    	 
    	hadoop104    secondarynamenode  datanode    nodemanager
    

    注意:NameNodeSecondaryNameNode不要安装在同一台服务器

    注意:ResourceManager也很消耗内存,不要和NameNodeSecondaryNameNode配置在同一台机器上。

    hadoop102hadoop103hadoop104
    HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNode
    YARNNodeManagerResourceManager NodeManagerNodeManager

    1.3.2 配置文件说明

    Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

    (1)默认配置文件:

    要获取的默认文件文件存放在Hadoop的jar包中的位置
    [core-default.xml]hadoop-common-3.1.3.jar/core-default.xml
    [hdfs-default.xml]hadoop-hdfs-3.1.3.jar/hdfs-default.xml
    [yarn-default.xml]hadoop-yarn-common-3.1.3.jar/ yarn-default.xml
    [mapred-default.xml]hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml

    (2)自定义配置文件:

    core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。

    • hadoop-env.sh (主要映射jdk的环境变量)(可以不配)

    • core-site.xml (配置hadoop的全局信息)

    • hdfs-site.xml

    • mapread-site.xml

    • yarn-site.xml

    注意:Hadoop 中加载配置文件的顺序

    ​ 当Hadoop集群启动后,先加载默认配置,然后再加载自定义配置文件,自定义的配置信息会覆盖默认配置。

    (3)常用端口号说明

    DaemonAppHadoop2Hadoop3
    NameNode PortHadoop HDFS NameNode8020 / 90009820
    Hadoop HDFS NameNode HTTP UI500709870
    Secondary NameNode PortSecondary NameNode500919869
    Secondary NameNode HTTP UI500909868
    DataNode PortHadoop HDFS DataNode IPC500209867
    Hadoop HDFS DataNode500109866
    Hadoop HDFS DataNode HTTP UI500759864

    1.3.3 配置集群

    (1)核心配置文件

    配置core-site.xml

    cd $HADOOP_HOME/etc/hadoop
    vim core-site.xml
    

    文件内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
    	<!-- 指定NameNode的地址 -->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop102:9820</value>
    </property>
    <!-- 指定hadoop数据的存储目录 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/module/hadoop-3.1.3/data</value>
    </property>
    
    <!-- 配置HDFS网页登录使用的静态用户为xu1an -->
        <property>
            <name>hadoop.http.staticuser.user</name>
            <value>xu1an</value>
    </property>
    
    <!-- 配置该xu1an(superUser)允许通过代理访问的主机节点 -->
        <property>
            <name>hadoop.proxyuser.xu1an.hosts</name>
            <value>*</value>
    </property>
    <!-- 配置该xu1an(superUser)允许通过代理用户所属组 -->
        <property>
            <name>hadoop.proxyuser.xu1an.groups</name>
            <value>*</value>
    </property>
    <!-- 配置该xu1an(superUser)允许通过代理的用户-->
        <property>
            <name>hadoop.proxyuser.xu1an.groups</name>
            <value>*</value>
    </property>
    
    </configuration>
    

    (2)HDFS配置文件

    配置hdfs-site.xml

    vim hdfs-site.xml
    

    文件内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
    	<!-- nn web端访问地址-->
    	<property>
            <name>dfs.namenode.http-address</name>
            <value>hadoop102:9870</value>
        </property>
    	<!-- 2nn web端访问地址-->
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>hadoop104:9868</value>
        </property>
    </configuration>
    

    (3)YARN配置文件

    配置yarn-site.xml

    vim yarn-site.xml
    

    文件内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
    	<!-- 指定MR走shuffle -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定ResourceManager的地址-->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop103</value>
    </property>
    <!-- 环境变量的继承 -->
        <property>
            <name>yarn.nodemanager.env-whitelist</name>
            <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
    <!-- yarn容器允许分配的最大最小内存 -->
        <property>
            <name>yarn.scheduler.minimum-allocation-mb</name>
            <value>512</value>
        </property>
        <property>
            <name>yarn.scheduler.maximum-allocation-mb</name>
            <value>4096</value>
    </property>
    <!-- yarn容器允许管理的物理内存大小 -->
        <property>
            <name>yarn.nodemanager.resource.memory-mb</name>
            <value>4096</value>
    </property>
    <!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
        <property>
            <name>yarn.nodemanager.pmem-check-enabled</name>
            <value>false</value>
        </property>
        <property>
            <name>yarn.nodemanager.vmem-check-enabled</name>
            <value>false</value>
        </property>
    </configuration>
    

    (4)MapReduce配置文件

    配置mapred-site.xml

    vim mapred-site.xml
    

    文件内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
    	<!-- 指定MapReduce程序运行在Yarn上 -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    

    1.3.4 分发Hadoop配置文件

    my_rsync.sh /opt/module/hadoop-3.1.3/etc/hadoop/
    

    hadoop103hadoop104上查看分发情况

    cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
    

    1.4 单点 启动/停止 集群

    1. 启动HDFS集群/停止HDFS集群

      启动

      • 注意: 首次启动HDFS需要对NameNode进行格式化操作,在hadoop102执行:
      hdfs namenode -format
      
      • hadoop102启动namenode
       hdfs --daemon start namenode
      

      可以用jps检查namenode是否启动

      • hadoop102 hadoop103 hadoop104 分别启动 datanode
       hdfs --daemon start datanode
      
      • hadoop104 启动secondarynamenode
      hdfs --daemon start secondarynamenode
      

      停止

      • hadoop102停止namenode

        hdfs --daemon stop namenode
        
      • hadoop102 hadoop103 hadoop104 分别停止 datanode

        hdfs --daemon stop datanode
        
      • hadoop104 停止secondarynamenode

      hdfs --daemon stop secondarynamenode
      
    2. 启动YARN集群/停止YARN集群

      启动

      • hadoop103启动resourcemanager
      yarn --daemon start resourcemanager
      
      • hadoop102 hadoop103 hadoop104 分别启动 nodemanager
      yarn --daemon start nodemanager
      

      停止

      • hadoop103停止resourcemanager

        yarn --daemon stop resourcemanager
        
      • hadoop102 hadoop103 hadoop104 分别停止 nodemanager

        yarn --daemon stop nodemanager
        

    格式 HDFS集群的 NameNode的注意事项

    • 集群只有首次搭建后需要对NameNode进行格式化操作
    • 如果集群在后期使用过程需要重新格式化,一定切记删除所有机器hadoop安装目录下的 data ,logs目录。

    1.5 群启/群停 集群的操作

    1.5.1 ssh 免密登录

    实现多服务器之间的 ssh 免密登录,可在先了解ssh原理,
    实现免密访问 hadoop102 hadoop103 hadoop104

    • 1、生成公钥和私钥:

      ssh-keygen -t rsa  # 敲4次回车
      

      生成的数据保存在/home/xu1an/.ssh

    • 2、将公钥拷贝到要免密登录的目标机器上:

      ssh-copy-id hadoop102
      ssh-copy-id hadoop103
      ssh-copy-id hadoop104
      

      在hadoop102,hadoop103,hadoop104上都要重复上面操作。

    • .ssh文件夹下(~/.ssh)的文件功能解释

    known_hosts记录ssh访问过计算机的公钥(public key)
    id_rsa生成的私钥
    id_rsa.pub生成的公钥
    authorized_keys存放授权过的无密登录服务器公钥

    1.5.2 群起集群

    1)配置workers

    当执行群启/群停脚本的时候,首先会解析etc/hadoop/workers ,解析到的内容都是每一台机器的地址,脚本会自动执行在每一台机器上启动 dn nm 。

    vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
    

    在该文件中增加如下内容:

    hadoop102
    hadoop103
    hadoop104
    

    **注意:**该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

    同步所有节点配置文件

    my_rsync.sh /opt/module/hadoop-3.1.3/etc
    
    1. 启动/停止集群

    注意:如果集群是第一次启动,需要在hadoop102节点格式化NameNode(注意格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)

    hdfs namenode -format
    
    • (hadoop102)启动/停止HDFS

      start-dfs.sh
      stop-dfs.sh
      
    • 在配置了ResourceManager的节点(hadoop103)启动/停止YARN

      start-yarn.sh
      stop-yarn.sh
      
    • Web端查看HDFS的NameNode

      浏览器中输入:http://hadoop102:9870

    • Web端查看YARN的ResourceManager

      浏览器中输入:http://hadoop103:8088

    1.5.3 自定义集群的脚本

    /home/xu1an/bin下创建群启/群停脚本my_cluster.sh

    touch my_cluster.sh
    chmod 744 my_cluster.sh
    

    脚本内容如下:

    #!/bin/bash
    
    #参数校验
    if [ $# -lt 1]
    then
     echo '参数不能为空!!!'
     exit
    fi
    
    case $1 in
    "start")
     #启动HDFS集群
     echo "===============启动HDFS集群===================="
     ssh hadoop102 /opt/module/hadoop-3.1.3/sbin/start-dfs.sh
     #启动YARN集群
     echo "===============启动YARN集群===================="
     ssh hadoop103 /opt/module/hadoop-3.1.3/sbin/start-yarn.sh
    ;;
     
    "stop")
     #停止HDFS集群
     echo "===============停止HDFS集群===================="
     ssh hadoop102 /opt/module/hadoop-3.1.3/sbin/stop-dfs.sh
     #停止YARN集群
     echo "===============停止YARN集群===================="
     ssh hadoop103 /opt/module/hadoop-3.1.3/sbin/stop-yarn.sh
    ;;
     
    *)
     echo '参数有误!!!'
     exit
    ;;
    esac 
    

    1.5.4 集群基本测试

    官方的wordcount案例在集群上跑一遍。运行官方wordcount案例

    http://hadoop102:9870/上创建wcinput文件并上传hello.txt。在hadoop102中进行操作:

    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
    

    同时,在http://hadoop103:8088/上可以观察到作业执行情况

    • 本地模式中:

       hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount file:///input file:///output
      

      /wcinput会被默认匹配为file:///wcinput

    • 完全分布式中:

      hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount hdfs://hadoop102:9820/input hdfs://hadoop102:9820/output
      

      而由于我们在core.xml中添加了配置hdfs://hadoop102:9820,那么/wcinput就会被匹配为hdfs://hadoop102:9820/wcinput

    思考:当MR程序在集群运行的时候 / 代表什么意思?

    答案:代表的是HDFS的根目录,有core-site.xml中的配置信息决定的

    <!-- 指定NameNode的地址 -->
    <property>
    	<name>fs.defaultFS</name>
    	<value>hdfs://hadoop102:9820</value>
    </property>
    

    1.5.5 配置历史服务器

    历史服务器是针对MR程序执行的历史记录。

    为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

    1. 配置mapred-site.xml

      /opt/module/hadoop-3.1.3/etc/hadoop下对mapred-site.xml文件进行修改

      该文件新增配置如下:

      <!-- 历史服务器端地址 -->
      <property>
          <name>mapreduce.jobhistory.address</name>
          <value>hadoop102:10020</value>
      </property>
      
      <!-- 历史服务器web端地址 -->
      <property>
          <name>mapreduce.jobhistory.webapp.address</name>
          <value>hadoop102:19888</value>
      </property>
      

      在hadoop102中单点启动,并测试

      mapred --daemon start historyserver
      
    2. 分发配置

      切记将配置mapred-site.xml,分发给其他机器。

      my_rsync /opt/module/hadoop-3.1.3/etc/hadoop/
      

    1.5.6 配置日志的聚集

    日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。日志是针对 MR 程序运行是所产生的的日志。

    日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。

    **注意:**开启日志聚集功能,需要重新启动NodeManagerResourceManagerHistoryServer

    开启日志聚集功能具体步骤如下:

    1. 配置yarn-site.xml

      vim yarn-site.xml
      

      在该文件里面增加如下配置。

      <!-- 开启日志聚集功能 -->
      <property>
          <name>yarn.log-aggregation-enable</name>
          <value>true</value>
      </property>
      <!-- 设置日志聚集服务器地址 -->
      <property>  
          <name>yarn.log.server.url</name>  
          <value>http://hadoop102:19888/jobhistory/logs</value>
      </property>
      <!-- 设置日志保留时间为7天 -->
      <property>
          <name>yarn.log-aggregation.retain-seconds</name>
          <value>604800</value>
      </property>
      
    2. 分发配置

      my_rsync $HADOOP_HOME/etc/hadoop/
      
    3. 关闭后启动NodeManager 、ResourceManage和HistoryServer

      my_cluster.sh stop
      mapred --daemon stop historyserver
      my_cluster.sh start
      mapred --daemon start historyserver
      
    4. 测试日志聚焦功能

      • 删除HDFS上已经存在的输出文件(输出文件不能重名)
      hadoop fs -rm -r /output
      
      • 执行WordCount程序
      hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
      

      可通过历史服务器去查看日志

    1.5.7 编写集群常用脚本

    1. 查看三台服务器java进程脚本:my_jps

      cd /home/xu1an/bin
      vim my_jps
      

      脚本内容如下:

      #!/bin/bash
      for host in hadoop102 hadoop103 hadoop104
      do
              echo =============== $host ===============
              ssh $host jps $@ | grep -v Jps
      done
      

      保存后退出,然后赋予脚本执行权限

      chmod 744 my_jps.sh 
      
    2. hadoop集群启停脚本(包含hdfs,yarn,historyserver):myhadoop.sh

      cd /home/xu1an/bin
      vim my_cluster
      

      脚本内容如下:

      #!/bin/bash
      
      #参数校验
      if [ $# -lt 1 ]
      then
       echo '参数不能为空!!!'
       exit
      fi
      
      case $1 in
      "start")
       #启动HDFS集群
       echo "===============启动HDFS集群===================="
       ssh hadoop102 /opt/module/hadoop-3.1.3/sbin/start-dfs.sh
       #启动YARN集群
       echo "===============启动YARN集群===================="
       ssh hadoop103 /opt/module/hadoop-3.1.3/sbin/start-yarn.sh
       #启动历史服务器(日志聚集)
       echo "=============启动历史服务器===================="
       ssh hadoop102 mapred --daemon start historyserver
       echo "Starting historyserver"
      ;;
      
      "stop")
       #停止历史服务器(日志聚集)
       echo "=============停止历史服务器===================="
       ssh hadoop102 mapred --daemon stop historyserver
       echo "Stopping historyserver"
       #停止HDFS集群
       echo "===============停止HDFS集群===================="
       ssh hadoop102 /opt/module/hadoop-3.1.3/sbin/stop-dfs.sh
       #停止YARN集群
       echo "===============停止YARN集群===================="
       ssh hadoop103 /opt/module/hadoop-3.1.3/sbin/stop-yarn.sh
      ;;
      
      *)
       echo '参数有误!!!'
       exit
      ;;
      esac 
      

      保存后退出,然后赋予脚本执行权限

      chmod 744 my_cluster
      

      分发/home/atguigu/bin目录,保证自定义脚本在三台机器上都可以使用

      my_rsync /home/xu1an/bin
      

    1.6 总结

    自此我们的分布式集群以及基本搭建完毕,也同时成功测试了hadoop的官方案例wordcount。后续我们将对hadoop内部的工作机制以及相关源码进行解析。

    更多相关内容
  • hadoop入门测试数据

    2014-06-07 16:24:27
    hadoop测试的数据,可用于刚刚接触hadoop的朋友学习和使用
  • HADOOP案例及测试资料

    2015-09-01 15:03:08
    1/Hadoop平台搭建及实例运行.doc; 2/hadoop常见测试问题_自测试.docx; 3/hadoop源代码分析.docx; 4/Hibench BenchMark suite.docx。
  • Hadoop本地测试(学习笔记2)

    千次阅读 2022-03-25 23:59:01
    Hadoop框架下 本地模式测试测试之前确保你的虚拟机已成功安装好了 hadoop框架 (在命令行输入 Hadoop version) 如上显示就安装和配置完成 进入到hadoop-3.1.3 文件夹下 使用命令行操作创建一个...

    Hadoop框架下 本地模式测试

    在测试之前确保你的虚拟机已成功安装好了 hadoop框架

    (在命令行输入 Hadoop version)

    如上显示就安装和配置完成

    1. 进入到hadoop-3.1.3 文件夹下

    1. 使用命令行操作创建一个字段文件夹和文档 来测试效果

      mkdir wcinput

    1. 进入创建好的 wcinput  ,在该文件夹下创建一个 word.txt文件

    在 wcinput文件夹下创建

    创建 word.txt文档

    vim word.tax

    在该文件夹下创建 几个字段 (确保其中有几个是相同的,用于测试)

    保存退出

    cd .. 返回到 hadoop-3.1.3文件夹界面

    1. 测试开始:

    输入指令  bin/hadoop jar share/  后双击 tab 键,显示如下

    在 share/后 紧跟写入  hadoop/ 双击 tab,显示如下

    在 hadoop/后 写入 mapreduce/ 双击 tab ,显示如下

    在之后的指令上 输入下图红框内的代码

    双击 tab 后 ,可以看见创建的 woinput文件

    如果没有 请从头看起查漏补缺!!!

    在 hadoop-mapreduce-examples-3.1.3.jar后 空格 加上 wordcount wcinput ./wcoutput 回车

    输入 以下查看结果

    完全分布式运行模式(开发重点)

    分析:

    1)准备 3 台客户机(关闭防火墙、静态 IP、主机名称)

    2)安装 JDK

    3)配置环境变量

    4)安装 Hadoop

    5)配置环境变量

    6)配置集群 

    7)单点启动

    8)配置 ssh

    9)群起并测试集群 

    编写集群分发脚本 xsync

    1)scp(secure copy)安全拷贝

    (1)scp 定义

    scp 可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)

    2)基本语法

    scp    -r   $pdir/$fname          $user@$host:$pdir/$fname

    命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

    展开全文
  • 云服务器搭建Hadoop集群

    千次阅读 2022-04-17 21:44:22
    云服务器搭建Hadoop集群一、配置服务器1. 创建普通用户2. 安装 Java 环境3.安装hadoop4.网络配置5.hadoop配置 一、配置服务器 1. 创建普通用户 说明:由于 root 环境下操作比较危险,所以这里新建一个普通用户来...

    一、配置服务器

    1. 创建普通用户

    • 说明:由于 root 环境下操作比较危险,所以这里新建一个普通用户来进行 hadoop 的搭建。
      创建一个普通用户 hadoop
    sudo useradd -m hadoop -s /bin/bash
    

    设置密码并重复一次

    sudo passwd hadoop
    

    给 hadoop 用户增加 sudo 管理员权限

    sudo adduser hadoop sudo
    

    关闭终端,重新登录,将用户名更改为 hadoop ,并输入密码登录
    切换到hadoop用户

    su hadoop
    

    2. 安装 Java 环境

    进入 /usr/lib 文件夹下

    cd /usr/lib
    

    创建 jvm 文件夹

    sudo mkdir jvm
    
    sudo tar -zxvf jdk-8u291-linux-x64.tar.gz -C /usr/lib/jvm
    
    • 编辑环境变量文件
    vim ~/.bashrc
    
    • 在文件头添加如下内容:
    export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_291
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
    
    • 保存后退出,并让 bashrc 文件重新生效
    source ~/.bashrc
    
    • 输入命令查看 Java 是否配置成功,显示如下即表示成功了
    java -version
    

    3.安装hadoop

    sudo tar -zxf hadoop-3.3.1.tar.gz -C /usr/local
    
    • 进入到 /usr/local 文件夹下,更改 hadoop-3.3.1 的文件名为 hadoop
    cd /usr/local
    sudo mv ./hadoop-3.3.1/ ./hadoop
    
    • 修改文件权限,让用户 hadoop 可以使用 hadoop 文件夹
    sudo chown -R hadoop ./hadoop
    
    • 进入到 hadoop 文件夹中,运行 hadoop,显示版本号即表示配置成功
      在这里插入图片描述

    4.网络配置

    • 配置hostname
      为了更好的在Shell中区分三台主机,修改其显示的主机名,执行如下命令
      在3台机器上分别执行
    sudo vim /etc/hostname
    

    在master的/etc/hostname中添加如下配置:

    master
    

    slave1的/etc/hostname中添加如下配置:

    slave1
    

    同理slave2

    slave2
    
    • 在三台机器的/etc/hosts文件中,添加如下配置
    ip1 master
    ip2 slave1
    ip3 slave2
    

    其中每台服务器自己的IP是内网IP,别人的是外网IP

    • 配置ssh免密登陆
      开始配置ssh之前,先确保三台机器都装了ssh。输入以下命令测试能否连接到本地,验证是否安装ssh。
    ssh localhost
    

    若不能,则安装open-server

    sudo apt-get openssh-server
    

    并生成ssh公钥。

    ssh-keygen -t rsa -P ""
    

    将公钥加入到已认证的key中

    cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
    

    在保证了三台主机电脑都能连接到本地localhost后,还需要让master主机免密码登录slave1和slave2主机。在master执行如下命令,将master的id_rsa.pub传送给两台slave主机。

    scp ~/.ssh/id_rsa.pub hadoop@slave1:/home/hadoop/
    scp ~/.ssh/id_rsa.pub hadoop@slave2:/home/hadoop/
    

    接着在slave1、slave2主机上将master的公钥加入各自的节点上,在slave1和slave2执行如下命令:

    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    rm ~/id_rsa.pub
    

    在master主机上直接执行如下测试命令,即可让master主机免密码登录slave1、slave2主机。

    ssh slave1
    ssh slave2
    

    5.hadoop配置

    在配置集群/分布式模式时,需要修改“/usr/local/hadoop/etc/hadoop”目录下的配置文件,这里仅设置正常启动所必须的设置项,包括workers 、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml共5个

    • 修改文件workers
      本教程让Master节点仅作为名称节点使用,因此将workers文件中原来的localhost删除,只添加如下两行内容:
    slave1
    slave2
    
    • 配置文件配置
    cd /etc
    vim hadoop-env.sh
    将JAVA_HOME修改为本机的JAVA_HOME
    JAVA_HOME=/usr/lib/jvm/java-openjdk
    

    修改core-site.xml

      <configuration>
          <property>
              <name>hadoop.tmp.dir</name>
              <value>file:/usr/local/hadoop/tmp</value>
              <description>Abase for other temporary directories.</description>
          </property>
          <property>
              <name>fs.defaultFS</name>
              <value>hdfs://master:9000</value>
          </property>
      </configuration>
    

    修改hdfs-site.xml:

    	<configuration>
      		<property>
        		<name>dfs.replication</name>
            	<value>3</value>
      		</property>
    	</configuration>
    

    修改mapred-site.xml

    <configuration>
    	<property>
        	<name>mapreduce.framework.name</name>
        	<value>yarn</value>
    	</property>
    </configuration>
    

    修改yarn-site.xml

     <configuration>
      <!-- Site specific YARN configuration properties -->
          <property>
              <name>yarn.nodemanager.aux-services</name>
              <value>mapreduce_shuffle</value>
          </property>
          <property>
              <name>yarn.resourcemanager.hostname</name>
              <value>master</value>
          </property>
      </configuration>
    

    配置好后,将 master 上的 /usr/local/Hadoop 文件夹复制到各个节点上。速度较慢,也可直接在slave上重新配置

    cd /usr/local/
    tar -zcf ~/hadoop.master.tar.gz ./hadoop
    cd ~
    scp ./hadoop.master.tar.gz slave1:/home/hadoop
    scp ./hadoop.master.tar.gz slave2:/home/hadoop
    

    在slave1,slave2节点上执行:

    sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
    sudo chown -R hadoop /usr/local/hadoop
    
    • 启动Hadoop集群
      在master主机上执行如下命令:
    cd /usr/local/hadoop
    bin/hdfs namenode -format
    sbin/start-all.sh
    

    运行后,在master,slave1,slave2运行jps命令,查看:

    jps
    

    首次启动Hadoop集群时,需要先在Master节点执行名称节点的格式化(只需要执行这一次,后面再启动Hadoop时,不要再次格式化名称节点),命令如下

    hdfs namenode -format
    

    6.执行分布式实例

    首先创建HDFS上的用户目录,命令如下:

    hdfs dfs -mkdir -p /user/hadoop
    

    然后,在HDFS中创建一个input目录,并把“/usr/local/hadoop/etc/hadoop”目录中的配置文件作为输入文件复制到input目录中,命令如下:

    hdfs dfs -mkdir input
    hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input
    

    接着就可以运行 MapReduce 作业了,命令如下:

     hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'
    

    3.0之后hadoop登录端口9870

    展开全文
  • hadoop基本测试方法

    千次阅读 2017-12-07 15:53:46
    最近在做hadoop的时候,总结了一些hadoop的一些基本的功能运用和一些基本性能测试,记录一下,希望可以帮助大家,由于输出信息太多,在这里只介绍命令,具体输出信息大家可以自己试验一下。不同的hadoop版本里自带的...

    最近在做hadoop的时候,总结了一些hadoop的一些基本的功能运用和一些基本性能测试,记录一下,希望可以帮助大家,由于输出信息太多,在这里只介绍命令,具体输出信息大家可以自己试验一下。不同的hadoop版本里自带的测试类也不尽相同,我的版本是2.7.3,里面的测试类是hadoop-mapreduce-client-jobclient.jar,有的hadoop版本里面的类名是hadoop-Test。jar

    一,Wordcount测试用例

    1, 新创建输入文件内容,在当前目录新建一个文件夹叫input,在文件夹里新建三个文件f1.txt,f2.txt,f3.txt,并分别写入一些内容。
    *[root@nx-1 input]# cat f1.txt
    hello hadoop

    [root@nx-1 input]# cat f2.txt 

    hello java

    [root@nx-1 input]# cat f3.txt 

    hello world***
    2, 在运行的hadoop中创建文件夹

    [hdfs@nx-1 input]$ hadoop fs -mkdir -p /home/hadoop/input

    3, 查看创建的文件夹

    [hdfs@nx-1 input]$ hadoop fs -ls /home/hadoop/

    Found 1 items
    drwxr-xr-x - hdfs hdfs 0 2017-12-07 03:21 /home/hadoop/input
    4, 把刚创建的文件复制到hadoop中的文件系统中(hdfs)

    [hdfs@nx-1 input]$ hadoop fs -put /home/hdfs/input/*  /home/hadoop/input/

    5, 查看文件是否在hadoop中,并查看文件内容是否和输入的一直

    [hdfs@nx-1 input]$ hadoop fs -ls /home/hadoop/input
    [hdfs@nx-1 input]$ hadoop fs -cat /home/hadoop/input/f1.txt

    6, 运行hadoop的example例子

    [hdfs@nx-1 hadoop-mapreduce]$ yarn jar hadoop-mapreduce-examples-2.7.3.jar wordcount /home/hadoop/input /home/hadoop/output

    7, 查看处理之后内容

    [hdfs@nx-1 hadoop-mapreduce]$ hadoop dfs -ls /home/hadoop/output
    [hdfs@nx-1 hadoop-mapreduce]$ hadoop dfs -cat /home/hadoop/output/part-r-00000

    二,hadoop自带测试类以及介绍

    1, hadoop Test
    当不带参数调试hadoop-mapreduce-client-jobclient.jar时,会列出所有的测试程序。

    [hdfs@nx-1 hadoop-mapreduce]$ yarn jar hadoop-mapreduce-client-jobclient.jar

    2, TestDFSIO write
    TestDFSIO 用于测试hdfs的IO性能,使用一个mapReduce作业来并发的执行读写操作,每个map任务用于读或写每个文件,map的输出用于手机与处理文件相关的统计信息,Reduce用于累积和统计信息,并产生summary。TestDFSIO的用法如下:

    以下的列子将往HDFS中写入10个1000MB文件:

    [hdfs@nx-1 hadoop-mapreduce]$ yarn jar hadoop-mapreduce-client-jobclient.jar TestDFSIO -write -nrFiles 10 -size 1000

    3, TestDFSIO read
    以下的例子将从hdfs中读取10个1000M的文件

    [hdfs@nx-1 hadoop-mapreduce]$ yarn jar hadoop-mapreduce-client-jobclient.jar TestDFSIO -read -nrFiles 10 -size 1000

    4, 清空测试数据

    [hdfs@nx-1 hadoop-mapreduce]$ yarn jar hadoop-mapreduce-client-jobclient.jar TestDFSIO –clean

    5, nnbench测试
    nnbench用于测试NameNode的负载,他会产生很多余HDFS相关的请求,给NameNode施加较大的压力。这个测试能在hdfs上模拟创建,读取,重命名和删除文件等操作。Nnbench的用法如下:

    下面是使用12个mapper和6个Reduce来创建1000个文件

    [hdfs@nx-1 hadoop-mapreduce]$ yarn jar hadoop-mapreduce-client-jobclient.jar nnbench -operation create_write -maps 12 -reduces 6 -blockSize 1 -bytesToWrite 0 -numberOfFiles 1000 -replicationFactorPerFile 3 -readFileAfterOpen true -baseDir /benchmarks/NNBench-`hostname -s`

    6, mrbench测试
    mrbench会多次重复一个小作业,用于检查在集群上小作业的是否可重复以及运行是否可高效,用法如下:

    以下会运行一个小作业一共50次

    [hdfs@nx-1 hadoop-mapreduce]$ yarn jar hadoop-mapreduce-client-jobclient.jar mrbench -numRuns 50

    最终结果
    这里写图片描述

    展开全文
  • hadoop测试环境搭建1

    千次阅读 2017-04-23 15:41:41
    在虚拟机里安装hadoop,关闭防火墙、配置ip 我的系统环境为:win8系统、vmware11、centos81、设置虚拟机网络通信模式为host only模式 在虚拟机目录下找到vmnetcfg文件 2、设置windows连接 3、修改linux系统...
  • hadoop单节点安装及测试

    千次阅读 2022-03-13 21:50:21
    按 i 进入编辑 设置主机名为 hadoop :wq 进行保存 (2)配置映射 root 用户下 [root]# vim /etc/hosts ip 为内网ip (3)创建用户 并赋予密码 [root]# passwd peizk [root]# useradd peizk 如下:...
  • [Hadoop]Hadoop单元测试MRUnit

    千次阅读 2016-12-08 20:12:17
    1. 设置开发环境从(https://repository.apache.org/content/repositories/releases/org/apache/mrunit/mrunit/)下载最新版本的MRUnit jar,例如如果你使用的hadoop版本为1.0.3,则需要下载mrunit-x.x.x-incubating...
  • 大数据-Hadoop-云服务器的搭建

    千次阅读 2022-03-22 11:55:29
    1. Hadoop以及JDK版本选择 2. Hadoop以及JDK上传云端 3. scp命令, sync命令以及集群分发脚本xsync 4. 添加环境变量 5. 安装完成后的校验 三. Hadoop配置文件 1. core-site.xml 2. hdfs-site.xml 3. yarn-...
  • Hadoop基准测试

    千次阅读 2019-06-27 16:11:14
    利用hadoop自带基准测试工具包进行集群性能测试测试平台为CDH5.16上hadoop2.6版本 目录 /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/ 使用TestDFSIO、mrbench、nnbench、Terasort 、sort 几个使用较广的...
  • 2.1熟悉常用的 Hadoop 命令 2.2Hadoop环境搭建 1.SSH登录权限设置 2.安装Java环境 3.Hadoop的安装 4.伪分布式安装配置 2.3Wordcount实例 2.4 搭建eclipse环境编程实现Wordcount程序 1、安装eclipse 2.配置...
  • 使用hadoop官方工具遇到了一些问题(附录详写),所以自己编写了测试用例进行压力测试 首先pom文件引入lombok,hadoop和hdfs的依赖包 <properties> <lombok.version>1.16.20</lombok.version> &...
  • Hadoop集群部署及简单测试

    千次阅读 2021-04-23 17:53:08
    本文讲述Hadoop集群的部署及简单的测试
  • 使用VMware模拟搭建完全分布式hadoop环境
  • hadoop:yarn页面测试关注点

    千次阅读 2022-04-25 16:37:32
    swift_compute运行日志:/data/br/base/hadoop/logs hadoop:yarn管理页面可以查看spark的实例个数以及内存大小 2.yarn管理页面看实例 global中配置实例的位置: 一般一个任务有2个进程:driver:固定一个实例,e
  • hadoop功能测试

    千次阅读 2019-04-14 14:10:07
    第六章主要是Hadoop的功能测试,本小节主要是叙述相关章节 6.功能测试   6.1 执行上传文件   6.2 执行下载文件 (to be continued ) 快速链接 上一篇 汇总目录 下一篇 云计算数据平台-hadoop集群 ...
  • HADOOP读写性能测试

    万次阅读 2017-06-11 13:05:44
    可使用hadoop自带的工具进行读写性能测试
  • Hadoop安装并配置环境变量(测试版)

    千次阅读 2022-01-04 16:59:42
    Hadoop的非集群版搭建
  • CDH6.0.1环境Hadoop集群性能测试

    千次阅读 2019-07-31 17:20:31
    本次主要是对新集群的性能测试测试环境: ... Hadoop自带的测试工具:Hadoop基准测试 首先,对服务器做一下测试,主要是磁盘I/O和网络I/O。 磁盘I/O 读测试 hdparm用于查看硬盘的相关信息或对硬...
  • Hadoop Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。
  • Hadoop测试——HDFS基准测试

    千次阅读 2019-01-14 21:12:02
    Hadoop基准测试   数据节点3台:8C/32GB /chunkdata01:1.2T   HDFS:3.46TB YARN:Memory:24GB=8G*3 Vcores:18C=6C*3   写入数据: TestDFSIO 第一次测试:失败 写入30*100GB(单个副本)的文件,执行...
  • 基于2x最新版本hadoop2.7.7版本编译。解决createFileWithMode0(Ljava/lang/String;JJJI)Ljava/io/FileDescriptor以及...2020-03-03新增2.7.7,hadoop2.7最后一个版本测试,win10X64。 2.7.7以及以下版本均可使用!
  • Hadoop部署(一)——IP设置及测试

    千次阅读 2021-10-30 14:55:14
    一、什么是hadoop hadoop是一个分布式系统架构,负责海量数据的存储和海量数据的分析计算。 spark框架可以在Hadoop之上做内存计算 二、hadoop框架搭建 1.虚拟机安装Centos系统 按照 硬件 -> 软件(OS) -> ...
  • 云服务器搭建hadoop环境心得

    千次阅读 2022-03-19 21:29:56
    本文参考博主-寒冰晓撤-的博文,在此基础上搭建hadoop环境,在她的基础上做了一些补充 0、网上的教程一般是在自己的电脑上安装一台虚拟机,然后载入CentOS环境,为满足集群化的效果,于是克隆出三台虚拟机 如果你的...
  • 1.首先确认linux服务器安装好了hadoop安装教程:http://blog.csdn.net/sunweijm/article/details/783997262.使用IDEA编写mapreducer的demo.2.1 IDEA创建一个maven项目,项目名称为WordCount2.2 配置Project Settings...
  • 解决办法: 1:解压该文件 2:将hadoop.dll复制到C:\Window\System32下 3:添加环境变量HADOOP_HOME,指向hadoop目录 4:将%HADOOP_HOME%\bin加入到path里面(或在代码中设置系统属性代码System.setProperty("hadoop....
  • 我安装的版本是Hadoop 3.2.1,操作系统平台是CentOS Linux 8,以下...Hadoop面向客户的主要有3个模块:HDFS、YARN、MapReduce,我们将分别对这三个模块进行使用测试: HDFS使用测试 HDFS是Hadoop的分布式文件系统,...
  • Linux服务器使用Docker安装Hadoop

    千次阅读 2022-04-16 22:44:34
    Linux服务器使用Docker安装Hadoop

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 146,451
精华内容 58,580
关键字:

网上hadoop测试服务

友情链接: Windowappllication.rar