Hadoop教程

hadoop基础配置及伪分布实现

本文主要是介绍hadoop基础配置及伪分布实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

hadoop基础配置及伪分布实现

目录

文章目录

  • hadoop基础配置及伪分布实现
    • 目录
    • 一、基础环境准备
      • 操作系统准备
      • 换源
      • 安装java
      • 安装其他软件
    • 二、单机hadoop安装与配置
      • hadoop的安装
      • hadoop配置 -- 单机伪分布式
    • 三、Hadoop的运行
      • 启动hadoop和运行任务

一、基础环境准备

  1. 操作系统准备

    • 安装ubuntu虚拟机

      镜像地址:https://mirrors.nju.edu.cn/ubuntu-releases/18.04/ubuntu-18.04.6-desktop-amd64.iso

    • 如果使用docker

      docker pull ubuntu:18.04

  2. 换源

    • 备份起始源列表

      • sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup
        
    • 打开源列表 (gedit命令是打开ubuntu的编辑器,如果是docker的话,需要换成vi命令)

      • sudo gedit /etc/apt/sources.list
        
    • 在文件最前面添加以下内容

      • #  阿里源
        deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
        deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
        deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
        deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
        deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
        deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
        deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
        deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
        deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
        deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
        
    • 刷新列表

      • sudo apt-get update
        sudo apt-get upgrade
        sudo apt-get install build-essential
        
  3. 安装java

    • 直接下载openJdk

      • sudo apt-get update
        sudo apt-get install openjdk-8-jdk
        
    • 验证java

      • java -version
        
  4. 安装其他软件

    • 安装ssh

      • sudo apt-get install ssh
        
      • 生成ssh密钥

        ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
        

        获取本机ssh访问权限

        ssh-copy-id localhost
        

        按下回车后会有确认是否加入hostList的询问,输入 “yes” 再按回车

        然后需要你输入本机密码

      • 测试ssh访问

        ssh localhost
        

        安装rsync

      • sudo apt-get install rsync
        

二、单机hadoop安装与配置

  1. hadoop的安装

    • 下载hadoop压缩包

      • cd ~
        wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz
        
    • 解压到这里

      • hadoop@ubuntu:~$ tar –zxvf hadoop-3.2.2.tar.gz
        
    • 检查是否解压成功

      • hadoop@ubuntu:~$ ls
        Desktop    Downloads         hadoop-3.2.2         Music     Public     Videos
        Documents  examples.desktop  hadoop-3.2.2.tar.gz  Pictures  Templates
        
      • 是否有hadoop-3.2.2的文件夹?

    • 配置JAVA_HOME环境变量

      • gedit ~/hadoop-3.2.2/etc/hadoop/hadoop-env.sh
        
      • 在编辑器中找到 “# export JAVA_HOME=”

      在这里插入图片描述

      把这一行改为 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64,保存退出即可

      • PS:上面这个地址的获得方法是输入以下命令,然后看输出

        update-alternatives --config java
        
  2. hadoop配置 – 单机伪分布式

    首先先说一点,这里的配置,往往一空格,一个标点符号或者大小写的错误都会导致最终运行失败,所以输入之前一定要检查!!

    • core-site.xml

      • 打开编辑器

        gedit ~/hadoop-3.2.2/etc/hadoop/core-site.xml
        
      • 插入配置,注释内容不用加

        <configuration>   # 配置
        	<property>      # 某个属性
        		<name>fs.defaultFS</name>  # 属性的名字是这个
        		<value>hdfs://localhost:9000</value>	# 属性的值是这个,这个值是hdfs的路径
        	</property>   # 属性的闭合标签,一定要有,斜线不要忘
        </configuration>
        

        在这里插入图片描述

    • hdfs-site.xml

      • gedit ~/hadoop-3.2.2/etc/hadoop/hdfs-site.xml
        

        写入如下内容

        <configuration>
        	<property>
        		<name>dfs.replication</name>   # 数据的备份个数
        		<value>1</value>			# 备份数为一个
        	</property>
        </configuration>
        

三、Hadoop的运行

  1. 启动hadoop和运行任务

    • 格式化NameNode并启动

      • 格式化

        ~/hadoop-3.2.2/bin/hdfs namenode -format
        
      • 启动NameNode

        ~/hadoop-3.2.2/sbin/start-dfs.sh
        
      • 查看集群状态

        hadoop@ubuntu:~$ jps
        10960 NameNode
        11529 Jps
        11115 DataNode
        11372 SecondaryNameNode
        
      • 浏览NameNode的web接口

        直接在虚拟机的浏览器里打开 http://localhost:9870

        在这里插入图片描述

    • 执行一些hdfs操作(之后会经常用到,熟记)

      hdfs是一个文件系统,操作和电脑的文件浏览器差不多,有创建文件夹、移动文件等操作

      • 创建hdfs目录

        ~/hadoop-3.2.2/bin/hdfs dfs -mkdir /user     # -mkdir path 是创建目录
        ~/hadoop-3.2.2/bin/hdfs dfs -mkdir /user/input
        
      • 拷贝输入文件到hdfs上

        ~/hadoop-3.2.2/bin/hdfs dfs -put ~/hadoop-3.2.2/etc/hadoop/*.xml /user/input  # -put a b是将本地的a放在hdfs的b上
        

        这个操作是将-put后面的 etc/hadoop/目录下所有后缀为xml的文件复制到hdfs文件系统的/user/hadoop目录下

      • 查看一下hdfs的文件

        hadoop@ubuntu:~$ ~/hadoop-3.2.2/bin/hdfs dfs -ls /user/input   # -ls a是列出目录a下所有文件
        Found 9 items
        -rw-r--r--   1 hadoop supergroup       9213 2021-10-26 06:54 /user/hadoop/capacity-scheduler.xml
        -rw-r--r--   1 hadoop supergroup        867 2021-10-26 06:54 /user/hadoop/core-site.xml
        -rw-r--r--   1 hadoop supergroup      11392 2021-10-26 06:54 /user/hadoop/hadoop-policy.xml
        -rw-r--r--   1 hadoop supergroup        849 2021-10-26 06:54 /user/hadoop/hdfs-site.xml
        -rw-r--r--   1 hadoop supergroup        620 2021-10-26 06:54 /user/hadoop/httpfs-site.xml
        -rw-r--r--   1 hadoop supergroup       3518 2021-10-26 06:54 /user/hadoop/kms-acls.xml
        -rw-r--r--   1 hadoop supergroup        682 2021-10-26 06:54 /user/hadoop/kms-site.xml
        -rw-r--r--   1 hadoop supergroup        758 2021-10-26 06:54 /user/hadoop/mapred-site.xml
        -rw-r--r--   1 hadoop supergroup        690 2021-10-26 06:54 /user/hadoop/yarn-site.xml
        
    • 运行MapReduce

      • 运行hadoop自带的示例

        ~/hadoop-3.2.2/bin/hadoop jar ~/hadoop-3.2.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar grep /user/input /user/output 'dfs[a-z.]+'
        

        分析以下其中的内容:

        • ~/hadoop-3.2.2/bin/hadoop: 调用hadoop程序
        • jar:执行这个程序的jar指令,就是告诉程序,要运行jar包
        • ~/hadoop-3.2.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar:要执行的jar包的地址
        • grep:grep是这个jar包里的指令,就类似于上面的jar和hadoop的关系(在之后自己写的hadoop程序中指定了主类,可以不填这个分支指令)
        • /user/input:是输入地址
        • /user/output:是输出地址,两个地址都是hdfs上的地址,需要注意的是 /user/output目录不能事先存在
        • '‘dfs[a-z.]+’:是grep指令的参数。grep做的事情是筛选文本,这个参数就是告诉grep按这种模式筛选文本。
      • 查看运行结果:

        • 先将hdfs上的结果获取到本地

          ~/hadoop-3.2.2/bin/hdfs dfs -get /user/output ~/output
          
        • 读取结果

          cat ~/output/*    # cat是显示文本的命令
          
    • 最后关闭hadoop集群,修改配置之前要先关闭集群

      ~/hadoop-3.2.3/sbin/stop-dfs.sh
      
这篇关于hadoop基础配置及伪分布实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!