大数据 Hadoop(一)概念与搭建环境

大数据 Hadoop

大数据概念

大数据由巨型数据集组成,这些数据集大小常超出人类在可接受时间下的收集、庋用、管理和处理能力。大数据的大小经常改变,截至2012年,单一数据集的大小从数太字节(TB)至数十兆亿字节(PB)不等。

在一份2001年的研究与相关的演讲中,麦塔集团(META Group,现为高德纳)分析员道格·莱尼(Doug Laney)指出数据增长的挑战和机遇有三个方向:量(Volume,数据大小)、速(Velocity,数据输入输出的速度)与多变(Variety,多样性),合称“3V”或“3Vs”。高德纳与现在大部分大数据产业中的公司,都继续使用3V来描述大数据。高德纳于2012年修改对大数据的定义:“大数据是大量、高速、及/或多变的信息资产,它需要新型的处理方式去促成更强的决策能力、洞察力与最优化处理。”另外,有机构在3V之外定义第4个V:真实性(Veracity)为第四特点。

大数据必须借由计算机对数据进行统计、比对、解析方能得出客观结果。美国在2012年就开始着手大数据,奥巴马更在同年投入2亿美金在大数据的开发中,更强调大数据会是之后的未来石油。数据挖掘(data mining)则是在探讨用以解析大数据的方法。[1]

大数据特点

具体来说,大数据具有4个基本特征:

  1. 数据体量巨大。 百度资料表明,其新首页导航每天需要提供的数据超过1.5PB(1PB=1024TB),这些数据如果打印出来将超过5千亿张A4纸。有资料证实,到目前为止,人类生产的所有印刷材料的数据量仅为200PB。
  2. 数据类型多样。 现在的数据类型不仅是文本形式,更多的是图片、视频、音频、地理位置信息等多类型的数据,个性化数据占绝对多数。
  3. 处理速度快。 数据处理遵循“1秒定律”,可从各种类型的数据中快速获得高价值的信息。
  4. 价值密度低。 以视频为例,一小时的视频,在不间断的监控过程中,可能有用的数据仅仅只有一两秒。
  5. 大数据不能取代关系型数据库的技术。

大数据能干什么

大数据的起步数据量:1PB = 124TB ,一台计算显然没有办法保存如此庞大的数据量。如果数据量很大,那么就需要解决一个数据查询的问题。但是,这个不是取代关系型数据库的技术。

主要解决两个问题:

  1. 存数据
  2. 读取数据

而hadoop是大数据的技术的核心以及基石,但是他不是代表了大数据的全部。

大数据背景

  1. Apache中的一个项目叫Lucenne是一个搜索引擎;
  2. Netch 是一个分布式的网络爬虫框架(通过请求把请求到的网页下载到本地中,是一种获取互联网资源的一种技术)。首先需要解决如何查与存储的问题(通过谷歌文件系统文章解决了存储问题)。
  3. Hadoop,是Apache的顶级项目,由下面几个部分组成:
    1. Hadoop Common:在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为Hadoop Common
    2. HDFS:Hadoop分布式文件系统(Distributed File System)-HDFS(Hadoop Distributed File System),负责存储
    3. MapReduce:并行计算框架,0.20前使用org.apache.hadoop.mapred旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API,负责读取算。
    4. YARN

Hadoop主要提供了两个部分:HDFS以及MapReduce。

Hadoop 生态圈

Hadoop 生态圈
主要构成

搭建Hadoop

节点配置

在搭建过程中,都可以先部署一台,然后通过FTP将一些配置传输到其他两台服务器上即可。下面主要配置的是Master主机C1。
下面的环境均搭建在CentOS7中,且JDK的版本为1.8.251

安装以及配置如下,如果下面的不清楚的地方可以参考《官方文档》。

  1. 需要三台Linux环境。

  2. 关闭服务器的防火墙(可选择永久关闭防火墙)。可使用命令service firewalld stop;关闭开机启动systemctl disable firewalld

  3. 三台电脑都需要安装gcc C语言运行库yum install gcc

  4. 卸载Linux 预装Java(三台服务器都需要卸载);安装自定义JDK版本,并配置环境变量可参见《Linux开发环境安装》。

  5. /etc/hosts文件下配置三台主机的IP地址。如下所示。

    $ vim /etc/hosts
    $ cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.0.20 c1
    192.168.0.21 c2
    192.168.0.22 c3
    
  6. 三台服务器都需要配置SSH免密登录。配置公钥私钥。

    1. 配置私钥,创建私钥ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa,三台主机都要生成私钥。此时生成的公私钥将在/root/.ssh目录中。如下所示:

      -rw-------. 1 root root  672 5月  11 17:04 id_dsa           ## 私钥
      -rw-r--r--. 1 root root  601 5月  11 17:04 id_dsa.pub       ## 公钥
      
    2. 将私钥追加到公钥(这个地方主要配置Master主机公钥)。cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys,将生成的公钥重新输出到一个authorized_keys文件中去(避免修改原有公钥)。同时需要将其他两台Slave1与Slave2的公钥的内容复制到authorized_keys中去。如下所示,一定要保证三个公钥各自占一行。

      ssh-dss AAAAB3NzaC1kc3MAAACBANFpVIAwyHBgJ3Ww1bWmyCAwsjdOyazUb5xWjINMGyE9b5bAyhtMxs8LLPq+PTqi6JygKX3V4uXU5cvac/hnrlaYXIZtlEmED/CIrmefGkVnmqWwdYSQYhoPxZScWcSTH6B+XmLeLx+IBxtXdkN4LgGfwplyIF1kiiN+swsx5CzNAAAAFQD+JEtvwTbsCOb9B/BP9FujtoeEBQAAAIEAhdjuzcD87MzdEuh4xlS9mndRPFqhi/9ieaOVxYqnwVz41281AK4Yox001nSy0/V+iQ1GnH9ilamla1SaTjoIRHy4y4yl1I5c14wJw21BWAe3H0rPcndtTEfMBcjPXakUahJRbGQVdJ31vu+22uQGSJS9xI/AGPR7b3F2IPvmK3cAAACBAJs7IjCKoCRbZ6Lri+k495y3/1B6JC4OHIur7Kq9bGNOJ7hpL7mr7h/xkuKogXcLIqkH6onWJd4tiAyhiFM7coBhRwZPTmu0L2+dyh5MgYNkeNCyHyLRUfCPOOjeB6rCfkfppcKIEK6GPLYzxksYhsmqN5P6YPXiw4YXAIBSHpkm root@Master
      ssh-dss AAAAB3NzaC1kc3MAAACBAPMsgWaBMQjB3WtFjeIvuJE7qPkB+JL+XPxAvXV2wbTEbXVq0/KBmdDrSXoTG/CfQkxUQVJYoS0UdG69IknfTHSQAt27uYvg0Nj85zh7WIMgACZ8FXDWUOo/K+YKCio/btLMM1x3s87NnL6QW53WKzOb6yy8FEqf4Ih+PzzJrZcHAAAAFQDuhNaDKmfw9nI+XpJJbcB8wdmRTwAAAIEA3yIthtT1ZPEMNsAaYbOE3U9OnVT4rcWjFDRInUeO3Vvx6WD5AkKx8THUhtGSZmUzCawmUFgTdoe5y9g20vdekYODq/cF5vgdzUQ6SnA5kpg9DDuv2hSFpK+HRvOOXOHDPSw0zHPPAsojGCKk81mFNjXR4I3dsHVv3vHCAAxkWogAAACATQdRcfkJCbcVtdUSUd6pGlzPwFNh4/crG64R9zYSry1jWLxzIHT8RPZGBLSsaSHN+FPnT7MYSkPitfbXJg6KPxt8mw0moqKUTom7S/Gs6w4V2m77bn5bDQD0w1Baf0whPipTo0SFfICen4r7vQlokyI9toPLxi+/aSXWSn4Kd3k= root@Slave1
      ssh-dss AAAAB3NzaC1kc3MAAACBALQSi4kCV1/zuXvBzo2L5FmvCfmHpS4BD49CsCMhalXjU1NS2H3WCeFWHBfLzdFl4utzjLht6/rn08ynscW5XfFV1RFtV1Ai/qGb1ETIKw4crzvBnnmg2+/YjXdZ5pA64xZB2Ldyq48N8izBgY4NupsXhYa/p51b7xZyf0XosfYvAAAAFQCQzCkmfY2u+1br8xv8QYQBa653qQAAAIEApGko/kgHHEAHCxH1iljJ0p6VyInoyRMVPcnOT8YLjsTiS8c+8dyqfpFXCl1CE8ysKDkCU3RMnLeWRzgEuhbKwVn6aCOb7RZppevlYiKgov2z4a7tVfGEfA4knrSoOfqU1+p0WHQikcXbM6M5MoxRfRu/VR3/eQ3ErO/KHms2UM4AAACBAKTps94dsj476Rlhcv75gUUfgbMTCqEW4mfCMFJKIWL09DNFENG9VEQ1zkH+qACF3If6QBJflu6l+3eg9JlfOIuQMUJkpoNJm/aLTVb5c419cJkh5v6fQ11aKajO3dY89ctYTDauo8L2OVSURatyz44yvoEZeTsD0uiTu1x24Ylw root@Slave2
      
    3. 远程拷贝至其他两服务器中。使用命令scp local_file remote_username@remote_ip:remote_folderauthorized_keys以及配置好的/etc/hosts文件发送到其他三台服务器中去。[2]

  7. 安装Hadoop。

    1. 从Apache Hadoop官网下载Hadoop二进制安装包。并传输至Linux服务器上,这里就传输至Master服务器上(192.168.0.20)。

      下载Hadoop

    2. 解压缩Hadoop安装包。

      ## 当前目录为/home/download下
      $ ls -al
      -rw-r--r--. 1 root root    366447449 5月  11 16:35 hadoop-2.9.2.tar.gz
      -rw-r--r--. 1 root root    195132576 4月  21 13:21 jdk-8u251-linux-x64.tar.gz
      -rw-r--r--. 1 root root    403607456 5月   7 18:13 mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz
      -rw-r--r--. 1 root root      1039530 5月   7 22:16 nginx-1.18.0.tar.gz
      
      ## 解压缩hadoop-2.9.2.tar.gz
      $ tar -zxf hadoop-2.9.2.tar.gz
      
      ## 查看当前目录内容
      $ ls -al
      drwxr-xr-x. 9  501 dialout       149 11月 13 2018 hadoop-2.9.2
      -rw-r--r--. 1 root root    366447449 5月  11 16:35 hadoop-2.9.2.tar.gz
      -rw-r--r--. 1 root root    195132576 4月  21 13:21 jdk-8u251-linux-x64.tar.gz
      -rw-r--r--. 1 root root    403607456 5月   7 18:13 mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz
      -rw-r--r--. 1 root root      1039530 5月   7 22:16 nginx-1.18.0.tar.gz
      
    3. /opt目录下创建hadoop目录,并将解压的/home/download/hadoop-2.9.2移动至/opt/hadoop下。

    4. 配置hadoop的环境变量,编辑/etc/profile文件。添加变量HADOOP_HOME=/opt/hadoop/hadoop-2.9.2

    5. 并在PATH变量中追加PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin(这里需要注意,添加了两个环境变量。一个是:$HADOOP_HOME/bin,另一个是$HADOOP_HOME/sbin),并更新环境变量设置source /etc/profile文件。

      # Hadoop环境变量
      export HADOOP_HOME=/opt/hadoop/hadoop-2.9.2
      
      export PATH=$PATH:$JAVA_HOME/bin:$MYSQL_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
      
    6. 生效后输入命令hadoop测试下,是否配置正确。出现如下信息即可代表配置正确了。

      $ hadoop
      
      Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
        CLASSNAME            run the class named CLASSNAME
       or
        where COMMAND is one of:
        fs                   run a generic filesystem user client
        version              print the version
        jar             run a jar file
                             note: please use "yarn jar" to launch
                                   YARN applications, not this command.
        checknative [-a|-h]  check native hadoop and compression libraries availability
        distcp   copy file or directories recursively
        archive -archiveName NAME -p  *  create a hadoop archive
        classpath            prints the class path needed to get the
                             Hadoop jar and the required libraries
        credential           interact with credential providers
        daemonlog            get/set the log level for each daemon
        trace                view and modify Hadoop tracing settings
      
      Most commands print help when invoked w/o parameters.
      
    7. 将环境变量环境传输给其他两台服务器(Slave1以及Slave2)。(同样使用scp命令即可,到时候切换至Slave1以及Slave2时更新下profile文件即可。)

      $ scp /etc/profile root@c2:/etc
      profile                 100% 2238     5.1MB/s   00:00    
      $ scp /etc/profile root@c3:/etc
      profile                 100% 2238     5.4MB/s   00:00 
      
  8. 配置Hadoop。

    1. 在hadoop根目录下创建三个目录,目录名称如下所示:

      • temp:临时目录
      • hdfs/name:namenode目录,用于存放数据
      • hdfs/data:datanode目录,也是用于存放数据
      $ ls -al
      
      drwxr-xr-x.  2  501 dialout    194 11月 13 2018 bin
      drwxr-xr-x.  3  501 dialout     20 11月 13 2018 etc
      drwxr-xr-x.  4 root root        30 5月  11 21:03 hdfs           ## 用于存放hdfs文件系统数据
      drwxr-xr-x.  2  501 dialout    106 11月 13 2018 include
      drwxr-xr-x.  3  501 dialout     20 11月 13 2018 lib
      drwxr-xr-x.  2  501 dialout    239 11月 13 2018 libexec
      -rw-r--r--.  1  501 dialout 106210 11月 13 2018 LICENSE.txt
      -rw-r--r--.  1  501 dialout  15917 11月 13 2018 NOTICE.txt
      -rw-r--r--.  1  501 dialout   1366 11月 13 2018 README.txt
      drwxr-xr-x.  3  501 dialout   4096 11月 13 2018 sbin
      drwxr-xr-x.  4  501 dialout     31 11月 13 2018 share
      drwxr-xr-x.  2 root root         6 5月  11 21:02 temp           ## 临时目录
      
    2. 找到hadoop根目录目录下的配置目录/opt/hadoop/hadoop-2.9.2/etc/hadoop/opt/hadoop/hadoop-2.9.2/etc/hadoop/mapred-site.xml.template将其创建一个副本文件/opt/hadoop/hadoop-2.9.2/etc/hadoop/mapred-site.xml,并需要将找到下面的配置文件做相应的修改。:

      1. /opt/hadoop/hadoop-2.9.2/etc/hadoop/core-site.xml是Hadoop的核心配置文件,该配置文件主要提供Hadoop对外的访问能力,修改内容如下(增加外部访问的地址、配置临时目录):

        
        
            
            
                fs.default.name
                hdfs://c1:9000 
                对外访问路径 
            
            
            
                hadoop.tmp.dir
                /opt/hadoop/hadoop-2.9.2/temp 
                临时文件夹 
            
        
        

        配置属性说明如下:

        属性 说明
        fs.default.name hdfs://c1:9000 HDFS的默认访问URI,对外访问地址,一定填写的是主机,而不是从机地址
        hadoop.tmp.dir /opt/hadoop/hadoop-2.9.2/temp 临时文件夹,即上一步安装过程中创建的/opt/hadoop/hadoop-2.9.2/temp
      2. /opt/hadoop/hadoop-2.9.2/etc/hadoop/hadoop-env.sh,找到脚本export JAVA_HOME=${JAVA_HOME}中,将其修改为当前环境变量中的信息export JAVA_HOME=/usr/local/Java/jdk1.8.0_251/bin/java,如下所示:

        # The java implementation to use.
        ## 你可以将原来模板中的JAVA_HOME注释掉。
        # export JAVA_HOME=${JAVA_HOME}
        export JAVA_HOME=/usr/local/Java/jdk1.8.0_251
        
      3. /opt/hadoop/hadoop-2.9.2/etc/hadoop/hdfs-site.xml,主要namenode信息。配置内容如下表:

        属性 说明
        dfs.name.dir /opt/hadoop/hadoop-2.9.2/hdfs/name namenode元数据
        dfs.data.dir /opt/hadoop/hadoop-2.9.2/hdfs/data datanode物理存储位置
        dfs.replication 3 副本个数,根据主从服务器数量合理配置。数据备份数量。如果是伪分布式
        可以只用备份数量1。备份数量不要大于节点数量。

        配置的格式与core-site.xml类似,如下所示:

        
        
        
           
          
              dfs.name.dir
              /opt/hadoop/hadoop-2.9.2/hdfs/name 
              namenode元数据 
          
          
          
              dfs.name.dir
              /opt/hadoop/hadoop-2.9.2/hdfs/data 
              datanode物理存储位置 
          
          
          
              dfs.replication
              3 
              数据副本个数,根据主从服务器数量合理配置。 
          
        
        
      4. /opt/hadoop/hadoop-2.9.2/etc/hadoop/mapred-site.xml,实际上配置的是yarn。告诉hadoop需要启动yarn。配置属性如下表:

        属性 说明
        mapreduce.framework.name yarn 整合yarn
        mapreduce.jobhistory.address c1:10020 任务历史
        mapreduce.jobhistory.webapp.address c1:19888 任务历史web端

        可先简单配置如下:

        
        
        
          
          
            mapreduce.framework.name
            yarn
          
        
        
      5. /opt/hadoop/hadoop-2.9.2/etc/hadoop/slaves,如果搭建伪分布式,则可以不用管该文件,如果是搭建全分布式(需要三台服务器),则需要将该文件修改为下面的形式。c1c2以及c3分别对应上面/etc/hosts中所配置的解析IP地址。

        c1
        c2
        c3
        
      6. /opt/hadoop/hadoop-2.9.2/etc/hadoop/yarn-env.sh,同修改/opt/hadoop/hadoop-2.9.2/etc/hadoop/hadoop-env.sh类似,将# export JAVA_HOME=/home/y/libexec/jdk1.6.0/将模板中语句改为export JAVA_HOME=/usr/local/Java/jdk1.8.0_251/即可,如下所示:

        # some Java parameters
        # export JAVA_HOME=/home/y/libexec/jdk1.6.0/
        export JAVA_HOME=/usr/local/Java/jdk1.8.0_251/
        
      7. /opt/hadoop/hadoop-2.9.2/etc/hadoop/yarn-site.xml,启动shuffle管理节点,配置的属性如下表:

        属性 说明
        yarn.nodemanager.aux-services mapreduce_shuffle 启动shuffle
        yarn.resourcemanager.webapp.address c1:8099 yarn的web监视端口(可选配置)

        具体配置如下:

        
        
        
            
                yarn.nodemanager.aux-services
                mapreduce_shuffle 
                启动shuffle,管理节点信息 
            
            
            
                yarn.resourcemanager.webapp.address
                c1:8099 
                yarn的web监视端口(可选配置) 
            
        
        

        需要避开刚刚配置core-site.xml中的端口

  9. 将Master中已经配置好的hadoop包分别拷贝至c2以及c3服务器(Slave1以及Slave2)中,仍然使用scp命令,分别执行下面两条命令即可。

    $ scp -r ./hadoop root@c2 /opt/
    $ scp -r ./hadoop root@c3 /opt/
    
  10. 在c2以及c3服务器中分别执行source /etc/profile,即,上面第七步中从c1(Master)中所传输过去的/etc/profile环境变量配置文件。分别验证下,环境是否正确。

    ## 输入hadoop命令,是否会出现下面的信息
    $ hadoop
    
    Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
          CLASSNAME            run the class named CLASSNAME
         or
          where COMMAND is one of:
          fs                   run a generic filesystem user client
          version              print the version
          jar             run a jar file
                               note: please use "yarn jar" to launch
                                     YARN applications, not this command.
          checknative [-a|-h]  check native hadoop and compression libraries availability
          distcp   copy file or directories recursively
          archive -archiveName NAME -p  *  create a hadoop archive
          classpath            prints the class path needed to get the
                               Hadoop jar and the required libraries
          credential           interact with credential providers
          daemonlog            get/set the log level for each daemon
          trace                view and modify Hadoop tracing settings
        
        Most commands print help when invoked w/o parameters.
    
  11. 格式化hadoop的hdfs文件管理。需要使用到/opt/hadoop/hadoop-2.9.2/bin/下的hdfs命令(另外两台c2以及c3则不用格式话,格式化的只有主机服务器c1——Master)。执行下面的命令

    $ /opt/hadoop/hadoop-2.9.2/bin/hdfs namenode -format
    
    ......
    ## 当看到有successfully格式化成功时,
    20/05/11 22:35:33 INFO common.Storage: Storage directory /opt/hadoop/hadoop-2.9.2/hdfs/data has been successfully formatted.
    20/05/11 22:35:33 INFO namenode.FSImageFormatProtobuf: Saving image file /opt/hadoop/hadoop-2.9.2/hdfs/data/current/fsimage.ckpt_0000000000000000000 using no compression
    20/05/11 22:35:33 INFO namenode.FSImageFormatProtobuf: Image file /opt/hadoop/hadoop-2.9.2/hdfs/data/current/fsimage.ckpt_0000000000000000000 of size 322 bytes saved in 0 seconds .
    20/05/11 22:35:33 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
    20/05/11 22:35:33 INFO namenode.NameNode: SHUTDOWN_MSG: 
    /************************************************************
    SHUTDOWN_MSG: Shutting down NameNode at c1/192.168.0.20
    ************************************************************/
    
  12. 启动hadoop,进入/opt/hadoop/hadoop-2.9.2/sbin/,找下面两个命令脚本start-dfs.sh以及start-yarn.sh——实际就是启动MapReduce——start-dfs.sh,Hadoop必须首先启动HDFS,然后在启动MapReduce——start-yarn.sh。下面还有一个start-all.sh脚本。

    -rwxr-xr-x.  1 501 dialout 2752 11月 13 2018 distribute-exclude.sh
    drwxr-xr-x.  4 501 dialout   36 11月 13 2018 FederationStateStore
    -rwxr-xr-x.  1 501 dialout 6477 11月 13 2018 hadoop-daemon.sh
    -rwxr-xr-x.  1 501 dialout 1360 11月 13 2018 hadoop-daemons.sh
    -rwxr-xr-x.  1 501 dialout 1640 11月 13 2018 hdfs-config.cmd
    -rwxr-xr-x.  1 501 dialout 1427 11月 13 2018 hdfs-config.sh
    -rwxr-xr-x.  1 501 dialout 3148 11月 13 2018 httpfs.sh
    -rwxr-xr-x.  1 501 dialout 3677 11月 13 2018 kms.sh
    -rwxr-xr-x.  1 501 dialout 4134 11月 13 2018 mr-jobhistory-daemon.sh
    -rwxr-xr-x.  1 501 dialout 1648 11月 13 2018 refresh-namenodes.sh
    -rwxr-xr-x.  1 501 dialout 2145 11月 13 2018 slaves.sh
    -rwxr-xr-x.  1 501 dialout 1779 11月 13 2018 start-all.cmd
    -rwxr-xr-x.  1 501 dialout 1471 11月 13 2018 start-all.sh
    -rwxr-xr-x.  1 501 dialout 1128 11月 13 2018 start-balancer.sh
    -rwxr-xr-x.  1 501 dialout 1401 11月 13 2018 start-dfs.cmd
    -rwxr-xr-x.  1 501 dialout 3734 11月 13 2018 start-dfs.sh
    -rwxr-xr-x.  1 501 dialout 1357 11月 13 2018 start-secure-dns.sh
    -rwxr-xr-x.  1 501 dialout 1571 11月 13 2018 start-yarn.cmd
    -rwxr-xr-x.  1 501 dialout 1347 11月 13 2018 start-yarn.sh
    -rwxr-xr-x.  1 501 dialout 1770 11月 13 2018 stop-all.cmd
    -rwxr-xr-x.  1 501 dialout 1462 11月 13 2018 stop-all.sh
    -rwxr-xr-x.  1 501 dialout 1179 11月 13 2018 stop-balancer.sh
    -rwxr-xr-x.  1 501 dialout 1455 11月 13 2018 stop-dfs.cmd
    -rwxr-xr-x.  1 501 dialout 3206 11月 13 2018 stop-dfs.sh
    -rwxr-xr-x.  1 501 dialout 1340 11月 13 2018 stop-secure-dns.sh
    -rwxr-xr-x.  1 501 dialout 1642 11月 13 2018 stop-yarn.cmd
    -rwxr-xr-x.  1 501 dialout 1340 11月 13 2018 stop-yarn.sh
    -rwxr-xr-x.  1 501 dialout 4295 11月 13 2018 yarn-daemon.sh
    -rwxr-xr-x.  1 501 dialout 1353 11月 13 2018 yarn-daemons.sh
    

    启动HDFS——start-dfs.sh成功后,可以通过刚刚配置的http://192.168.0.20:50070/查看HDFS情况。该Web页面主要查看数据节点硬盘使用情况。

    HDFS监控平台

    启动MapReduce成功后,可以通过yarn-site.xml中配置的管理节点信息的c1:8099中查看启动情况。该web平台主要监控yarn的使用情况。

    yarn监控平台

    看到这两个页面,至少说明了yarn以及hdfs启动成功。


下面提供三个常用web地址以及端口,当然主要还是看如何配置的。:

  1. HDFS监控端口,即 {主机IP地址}:50070
  2. YARN监控端口,即 {主机IP地址}:8099
  3. HDFS访问端口,即 {主机IP地址}:9000

HDFS Shell 操作

基本和Linux Shell 操作一致。可参见《官方文档——命令手册》,此处不在一一列举。

  1. 目录操作 hadoop fs -ls /;
  2. 创建文件操作 hadoop fs -mkdir /input
  3. 上传文件 hadoop fs -put /etc/hosts /input
  4. 下载文件操作 hadoop fs -get /input/hosts ./下载到当前目录。
  5. 删除文件操作 hadoop fs -rmr /out 删除目录。如果版本比较新的话。将出现下面的提示信息。
    $ hadoop fs -rmr /input/profile
    
    # rmr已经过期,请使用 -rm -r 代替。
    rmr: DEPRECATED: Please use '-rm -r' instead.
    Deleted /input/profile
    

下面演示上面几条命令

## 创建目录
$ hadoop fs -mkdir /input
$ hadoop fs -mkdir /out

## 上传文件
$ hadoop fs -put /etc/profile /input

## 查看文件列表
$ hadoop fs -ls /
Found 2 items
drwxr-xr-x   - root supergroup          0 2020-05-11 23:11 /input
drwxr-xr-x   - root supergroup          0 2020-05-11 23:10 /out
$ hadoop fs -ls /input
Found 1 items
-rw-r--r--   3 root supergroup       2238 2020-05-11 23:11 /input/profile

## 删除文件
$ hadoop fs -rmr /input/profile

rmr: DEPRECATED: Please use '-rm -r' instead.
Deleted /input/profile

【注意事项】:

  1. HDFS的Shell操作没有目录切换操作。
  2. 进行操作时,一般都需要全路径操作。

  1. 《大数据》; ↩

  2. 关于scp命令如何使用,可参见有道笔记中关于《Linux》中的第三章内容《liunx常用命令(三)》。 ↩

你可能感兴趣的:(大数据 Hadoop(一)概念与搭建环境)