上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

Hadoop安装和使用详解

guduadmin11天前

本文主要参考林子雨老师的教程,以下是参考源:

视频慕课:2.3.2 Hadoop的安装与使用详解_哔哩哔哩_bilibili

本文希望通过部署Hadoop为主线,对Hadoop的框架组成、各部分协同工作的原理、技术细节形成一个初步的认知和了解。

Hadoop安装前置知识

现在比较常见的Linux系统安装方式是选择虚拟机安装,在安装前进行方法调研的时候笔者发现:近三年几乎所有方法都是基于虚拟机安装的。而林子雨老师视频中也对两种方法的选择进行了说明:

Hadoop安装和使用详解,在这里插入图片描述,第1张

总的来说,双系统安装并不是使用Linux系统的最优解。主要原因还是使用时较为不方便,一台电脑上最多只能支持同时使用一个系统。其他原因可能是浪费磁盘空间、双系统的配置比较复杂等。但是相比于虚拟机安装,双系统安装的优点是两个系统都能够直接访问硬件。

由于个人原因,笔者采取了双系统安装方式。Linux系统已经早早安装就绪,这里就不做过多演示。

在部署Hadoop之前,需要了解一定的Linux基础知识,如:

  • Shell:是指“提供使用者使用界面”的软件(命令解析器),类似于DOS下的command和后来大家比较熟知的cmd.exe。它主要用于接收用户命令然后调用相应的应用程序。
  • sudo命令:是Ubuntu中一种权限管理机制。管理员可以授权给一些普通用户去执行一些需要root权限执行的操作。当使用sudo命令时,就需要输入当前用户的密码。
  • 密码输入:Linux系统终端输入密码时是不会显示当前输入的内容和输入提示的,不要误以为键盘没有响应。
  • 复制粘贴:在Ubuntu终端窗口中,复制粘贴的快捷键需要加上shift。

    Hadoop有以下几种运行模式:

    • 单机/本地模式:这是Hadoop的默认模式(又称非分布式模式),无需进行其他配置即可运行非分布式即单Java进程,方便进行本地开发调试,适合需要快速安装、体验Hadoop的用户。它访问的是本地磁盘,并不会去访问分布式文件系统HDFS。
    • 伪分布式模式:学习Hadoop一般是在伪分布式模式下进行。伪分布式的意思是虽然各个模块是在各个进程上分开运行的,但是最终还是运行在一个操作系统上,并不是真正的分布式。在该模式下,Hadoop可以在单节点上以伪分布式的方式运行,Hadoop进程以分离的JAVA进程来运行,节点既作为Namenode也作为Datanode,同时读取的是HDFS中的文件。简单来说,这个模式就是在一台机器上各个进程上运行Hadoop的各个模块。下文我们也主要采用这个模式来部署Hadoop。
    • 分布式模式:使用多台服务器构成集群环境来运行Hadoop,该模式是生产环境采用的模式。

      Hadoop安装记录

      由于笔者决定采用伪分布式模式运行Hadoop框架,该模式并非生产环境所采用的模式,笔者只是希望通过该模式了解Hadoop集群的一些功能,因此没有非常严格地去查看安装的Hadoop框架以及对应的JDK版本,只是照本宣科地跟着林子雨老师的教程过了一遍。正常的Hadoop框架配置应当预先准备好这一步。

      查看环境

      参考资料:https://blog.csdn.net/YUE_sasa/article/details/115334502

      笔者采用的命令是:

      uname -a
      

      Hadoop安装和使用详解,在这里插入图片描述,第2张

      在装好Ubuntu系统后,在安装Hadoop之前还需要一些工作。

      创建Hadoop用户

      首先是创建一个名为" h a d o o p hadoop hadoop"的用户,创建该用户命令如下:

      $ sudo useradd -m hadoop -s /bin/bash
      

      Hadoop安装和使用详解,在这里插入图片描述,第3张

      该命令创建了可以登陆的" h a d o o p hadoop hadoop"用户,然后可以为其设置密码。

      $ sudo passwd ******(个人密码)
      

      Hadoop安装和使用详解,在这里插入图片描述,第4张

      同时我们还可以为 h a d o o p hadoop hadoop用户增加管理员权限,方便部署,在学习过程中可以解决一些比较复杂棘手的权限问题。

      $ sudo adduser hadoop sudo
      

      Hadoop安装和使用详解,在这里插入图片描述,第5张

      最后注销当前用户,返回登录界面,选择刚才创建的 h a d o o p hadoop hadoop用户进行登录。

      更新apt

      在这里,apt(Advanced Packaging Tool)是一个Ubuntu中的Shell前端软件包管理器。apt命令提供了查找、安装、省级、删除某一个/一组甚至全部软件包的命令,且命令非常简洁易记忆。

      在使用 h a d o o p hadoop hadoop用户登录后,要先更新一下apt,因为后续需要用到apt安装软件。我们可以使用下面这条代码:

      $ sudo aptget update
      

      如果出现问题,可以参考一下林子雨老师的视频进行配置。

      后续我们还需要更改一些配置文件,一般有两种方法:1.使用vim。2.使用gedit。gedit用起来感觉更偏向于windows的txt,对于刚接触Linux系统的同学比较友好。一般来说,linux系统都是默认带有gedit的。gedit的一个坏处是:如果文件更改完不及时关闭gedit程序,会导致终端被占用而无法使用终端。如果需要使用到vim,可以输入下面的代码:

      $ sudo apt-get install vim
      

      Hadoop安装和使用详解,在这里插入图片描述,第6张

      vim的使用可以参考这篇教程:(4条消息) Linux Vim编辑器的基本使用__HsForPyp的博客-CSDN博客

      安装SSH、配置SSH无密码登陆

      集群、单节点模式都需要用到SSH登陆(类似于远程登陆),Ubuntu默认已经安装了SSH client,此外还需要安装SSH server:

      $ sudo apt-get install openssh-server
      

      安装后,可以使用如下命令登陆本机:

      $ ssh localhost
      

      如果你是首次登陆,会出现以下提示,只需要输入yes然后根据题示输入密码,即可登录到本机。

      Hadoop安装和使用详解,在这里插入图片描述,第7张

      但是这样每次登陆都是需要输入密码,相对来说比较繁琐,将SSH配置成无密码登陆会比较方便。

      然后我们可以退出刚才的SSH:

      $ exit
      

      在回到原先的终端窗口后,我们就可以利用SSH-keygen生成密钥,并且将密钥加入到授权中:

      $ cd ~/.ssh/
      $ ssh-keygen -t rsa #会有提示,一直摁回车就好
      $ cat .id_rsa.pub >> ./authorized_keys #加入授权
      

      Hadoop安装和使用详解,在这里插入图片描述,第8张

      此时再使用ssh localhost命令,无需输入密码就可以直接登陆了:

      Hadoop安装和使用详解,在这里插入图片描述,第9张

      安装Java环境

      因为我们需要安装的是Hadoop3.1.3,其需要的JDK版本在1.8以上。我们要先在JDK官网下载JDK1.8的安装包并保存到本地,然后手动安装。

      Hadoop安装和使用详解,在这里插入图片描述,第10张

      在Linux命令行界面中,我们执行如下命令就可以实现安装包的解压缩:

      $ cd /usr/lib
      $ sudo mkdir jvm #该位置用于存放JDK文件
      $ cd ~ #进入到hadoop用户的主目录
      $ sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm #解压JDK文件到jvm目录下
      

      JDK文件解压缩后,我们可以执行如下命令去jvm目录查看一下:

      $ cd /usr/lib/jvm
      $ ls
      

      Hadoop安装和使用详解,在这里插入图片描述,第11张

      看到上图中的结果之后就说明JDK文件已经解压成功。下面继续执行如下命令,设置环境变量:

      $ cd ~
      $ vim ~/.bashrc
      

      Hadoop安装和使用详解,在这里插入图片描述,第12张

      在该文件中,输入上图中四条export语句。要注意JAVA_HOME变量的位置一定要是JAVA安装路径的具体地址,否则后面会卡步骤。

      保存.bashrc文件后并退出vim编辑器。然后继续执行如下命令使修改的文件立刻生效:

      $ source ~/.bashrc #使文件立刻生效
      $ java -version #查看是否安装成功
      

      Hadoop安装和使用详解,在这里插入图片描述,第13张

      如果屏幕上返回上图中的信息,则说明JAVA环境安装成功。

      Hadoop安装

      这个和安装JDK一样,先去Hadoop官网下载相关压缩包即可。

      $ sudo tar -zxf ~/hadoop-3.1.3.tar.gz -C /usr/local #解压代码
      $ cd /usr/local/
      $ sudo mv ./hadoop-3.1.3/ ./hadoop #将文件夹名改为hadoop
      $ sudo chown -R hadoop ./haoop #修改文件权限
      

      Hadoop安装和使用详解,在这里插入图片描述,第14张

      Hadoop解压之后即可使用,可以通过下面的代码检查其是否可用:

      $ cd /usr/local/hadoop
      $ ./bin/hadoop version
      

      Hadoop安装和使用详解,在这里插入图片描述,第15张

      Hadoop伪分布式配置

      如果Hadoop在单节点上以伪分布式的方式运行,Hadoop进程以分离的JAVA进程来运行,节点既可以作为NameNode也可以作为DataNode,同时,该模式下读取的是HDFS中的文件。

      伪分布式需要修改两个配置文件 c o r e − s i t e . x m l core-site.xml core−site.xml和 h d f s − s i t e . x m l hdfs-site.xml hdfs−site.xml。Hadoop的配置文件是xml形式,每个配置以声明property的name和value的方式来实现。这里的修改会比较多,建议采用gedit编辑会相对来说比较容易上手,方便初学者学习。

      Hadoop安装和使用详解,在这里插入图片描述,第16张

      Hadoop安装和使用详解,在这里插入图片描述,第17张

      需要在两个配置文件中补充上述两张图中红色方框内的内容即可。

      配置完成后,我们可以执行NameNode的格式化:

      $ cd /usr/local/hadoop
      $ ./bin/hdfs namenode -format
      

      成功的话,可以看到如下界面:

      Hadoop安装和使用详解,在这里插入图片描述,第18张

      成功启动后,我们还可以访问Web界面http://localhost:9870查看Namenode和Datanode信息,还可以在线查看HDFS中的文件。

      Hadoop安装和使用详解,在这里插入图片描述,第19张

      如果启动中遇到问题,可以先看林子雨老师的相关课程,其中有一些问题的解答。

      Hadoop运行实例

      HDFS文件读写

      我们本文采用的是伪分布式运行模式,可以读取HDFS上的数据。而要使用HDFS上的数据,首先要在HDFS中创建用户目录:

      $ ./bin/hdfs dfs -mkdir -p /user/hadoop
      

      Hadoop安装和使用详解,在这里插入图片描述,第20张

      接着我们将本地的xml文件作为输入文件复制到分布式文件系统HDFS中:

      $ ./bin/hdfs dfs -mkdir input
      $ ./bin/hdfs dfs -put ./etc/hadoop/*.xml input
      $ ./bin/hdfs dfs -ls input #复制完成之后,我们可以通过这条命令查看文件列表
      

      Hadoop安装和使用详解,在这里插入图片描述,第21张

      Hadoop安装和使用详解,在这里插入图片描述,第22张

      伪分布式运行MapReduce作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件,我们可以通过单机步骤创建本地input文件夹,输出结果output文件夹都删掉来验证这一点:

      Hadoop安装和使用详解,在这里插入图片描述,第23张

      Hadoop安装和使用详解,在这里插入图片描述,第24张

      可以看到,本地文件的修改并不影响伪分布式读取的结果,伪分布式读取的文件不属于本地,而是HDFS中的文件。

      我们也可以将运行结果取回本地:

      Hadoop安装和使用详解,在这里插入图片描述,第25张

      如果要关闭Hadoop,我们可以运行下面的代码:

      $ ./sbin/stop-dfs.sh
      

      Hadoop安装和使用详解,在这里插入图片描述,第26张

      否则下次启动hadoop会出现这样的情况:

      Hadoop安装和使用详解,在这里插入图片描述,第27张

      MAPREDUCE任务运行

      如果想知道hadoop是否是开启状态,我们可以输入以下命令进行查看:

      jps
      

      Hadoop安装和使用详解,在这里插入图片描述,第28张

      可以看到,目前是有四个Java进程正在运行,根据我们的配置情况来看,hadoop目前是开启状态的。

      我们计划使用Hadoop自带的WordeCount进行词频统计,这个过程中我们将会用到Mapreduce来运行任务。

      首先我们要准备好输入数据,即需要做统计词频的txt文件(该文件内应存储已经分词的结果,不能存储整篇文章),我们准备了一个hello.txt文件作为输入数据,其内容如下:

      Hadoop安装和使用详解,在这里插入图片描述,第29张

      (笔者是先在Windows系统中准备好相应的输入数据,再在Linux系统中进行操作)

      应该注意的是,该文件在Linux系统中的存储位置应在Hadoop文件下。

      然后我们就可以输入以下命令将准备好的词频文件上传到HDFS中做准备:

      $ bin/hdfs dfs -mkdir -p /input #在HDFS上创建一个文件夹存放需要计算词频的txt文件
      $ bin/hdfs dfs -put hello.txt /input #将本地文件上传到刚刚在HDFS中创建的文件夹中
      $ bin/hdfs dfs -ls /input #我们可以通过这个命令查看在HDFS中的这个文件
      

      Hadoop安装和使用详解,在这里插入图片描述,第30张

      接下来我们就需要通过hadoop中jar包内自带的wordcount计算词频,首先我们要找到jar包的位置,路径不出以外应该是:…(hadoop安装位置)/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar

      我们可以通过如下命令计算词频:

      $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input/hello.txt /out/hellocount
      

      Hadoop安装和使用详解,在这里插入图片描述,第31张

      然后我们就可以通过下面这条命令查看词频统计后输出的结果了:

      $ bin/hdfs dfs -cat /out/hellocount/part-r-00000
      

      Hadoop安装和使用详解,在这里插入图片描述,第32张

      实验顺利结束!!!

      (上述内容仅作记录、学习使用。)

网友评论

搜索
最新文章
热门文章
热门标签