Hadoop环境搭建

本文主要是从0开始搭建Hadoop伪分布,涉及到的知识点:

  1. VMware创建RetHat Linux虚拟机
  2. 防火墙
  3. 免密码登陆
  4. 本地模式
  5. 伪分布模式
  6. 全分布模式

准备工作

在正式搭建之前,有两件事要做:

  1. 下载一个VMware12并安装
  2. 先下一个RetHat Linux的iso文件,可以前往RetHat官网下载

开始虚拟机的创建和安装:

虚拟机的创建

首先在左侧我的计算机列表处右击选择创建虚拟机,然后就是按照下面我截图的步骤来做就可以了。

步骤1
步骤2
步骤3
步骤4
步骤5
步骤6
步骤7
步骤8
步骤9
步骤10
步骤11
步骤12
步骤13
步骤14

虚拟机的安装

安装步骤1
安装步骤2
安装步骤3
安装步骤4
安装步骤5
安装步骤6
安装步骤6-1
安装步骤7
安装步骤7-1
安装步骤8
安装步骤8-1
安装步骤9
安装步骤9-1
安装步骤10
安装步骤10-1
安装步骤10-2
安装步骤10-3
安装步骤11
安装步骤12
在安装完成之后点击Reboot重启。
安装步骤13

输入账号、密码即可使用。

虚拟机的Hadoop环境配置

在Linux的root目录下新建tools、training、temp目录,tools专门防止安装包、training专门放置安装的软件包、temp是一些临时文件

在正式的配置Hadoop的环境之前,我们需要先做一些其它的配置如下:

  1. 关闭防火墙

    (1)查看防火墙的状态:systemctl status firewalld.service

    (2)关闭防火墙: systemctl stop firewalld.service

    (3)禁用防火墙(永久):systemctl disable firewalld.service

  2. 设置主机名(配置文件,目录为:/etc/hosts)

    通过vi编辑器来修改配置文件,打开文件命令为:vi /etc/hosts,将ip地址和主机名写入文件并保存,格式如下:

    192.168.171.113 bigdata113

  3. 安装常用软件(这些包都是事先下好的,使用WinScp上传到Linux上的)

    安装Java的JDK

    tar -zxvf jdk-8u144-linux-x64.tar.gz -C ~/training/
    设置环境变量:vi ~/.bash_profile
    JAVA_HOME=/root/training/jdk1.8.0_144
    export JAVA_HOME
    
    PATH=$JAVA_HOME/bin:$PATH
    export PATH
    
    生效环境变量: source  ~/.bash_profile

    安装tree命令,安装包是以.rpm结尾

    //i表示install vh表示安装时显示进度
    rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
    tree -d -L 2:-d表示只显示目录;-L表示目录的层数

    Hadoop的安装和配置
    1. 首先安装Hadoop

      tar -zxvf hadoop-2.7.3.tar.gz -C ~/training/

    2. 设置环境变量:vi ~/.bash_progile

      HADOOP_HOME=/root/training/hadoop-2.7.3
      export HADOOP_HOME
      
      PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
      export PATH
    3. 使环境变量生效

      source ~/.bash_profile

    下面就是开始Hadoop的配置,Hadoop的话一共有3种模式,分别是本地模式、伪分布模式、全分布模式,下面我们会一个个来进行配置。

    本地模式

    本地模式的特点:一台Linux,没有HDFS,只能测试MapReduce程序(本地数据:Linux的文件)

    配置:hadoop-env.sh (在/root/training/hadoop-2.7.3/etc/hadoop目录下)

    ​ 26行 export JAVA_HOME=/root/training/jdk1.8.0_144

    现在Hadoop的本地模式我们就应经配置好了,我们在根目录下的temp中新建一个data.txt文件,内容为:

    I love Beijing
    I love China
    Beijing is the capital of China

    然后使用Hadoop提供的example jar来测试计数程序,具体如下:

    example: /root/training/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar
    hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount ~/temp/data.txt ~/temp/mr/wc1

    以下就是进行wordcount的结果:

    本地模式wordcount

伪分布模式

伪分布模式的特点:一台Linux,在单机上,模拟一个分布式的环境,具备Hadoop的所有功能。一般来说,数据块冗余度和数据结点的数量是一样的。最大不要超过3。

配置:

 hdfs-site.xml
    <!--数据块的冗余度,默认是3-->
    <property>
      <name>dfs.replication</name>
      <value>1</value>
    </property>

    <!--是否开启HDFS的权限检查,默认:true-->
    <!--
    <property>
      <name>dfs.permissions</name>
      <value>false</value>
    </property>
    -->

   core-site.xml
    <!--NameNode的地址,9000是RPC的通信端口-->
    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://bigdata113:9000</value>
    </property> 

    <!--HDFS数据保存的目录,默认是Linux的tmp目录。Linux的tmp目录重新之后会清空-->
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/root/training/hadoop-2.7.3/tmp</value>
    </property> 

   mapred-site.xml(注意:本身是没有这个文件的,只有一个 mapred-site.xml.template,我们主要复制一份即可)
    <!--MR程序运行的容器是Yarn-->
    <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
    </property>     

   yarn-site.xml
    <!--Yarn的主节点ResourceManager的地址-->
    <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>bigdata113</value>
    </property>     

    <!--NodeManager运行MR任务的方式-->
    <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
    </property> 

配置完之后, 对NameNode进行格式化: hdfs namenode -format,输出的日志包含以下成功标记即可:

Storage directory /root/training/hadoop-2.7.3/tmp/dfs/name has been successfully formatted.

现在就可以启动hadoop了,命令是:

启动:start-all.sh (等价于start-dfs.sh + start-yarn.sh)

下图是启动hadoop之前运行的进程情况:

Hadoop启动之前运行的进程

以下是启动之后运行的进程情况:

Hadoop启动之后运行的进程

可以看到NameNode、DataNode、SecondaryNameNode等都启动成功了。

注意:一旦配置了伪分布模式,进行分析的数据必须都是hdfs目录,我们需要创建hdfs目录,并把linux下的目录文件拷贝进去。

我们还是以data.txt为例,首先创建hdfs的文件目录input,并将linux目录下的data.txt拷贝一份到input下,命令如下:

  • hdfs dfs -mkdir /input
  • hdfs dfs -mkdir /output
    • hdfs dfs -put ~/temp/data.txt /input

拷贝完成之后运行如下命令(必须在MapReduce目录下执行,否则报错):

  • hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /input/data.txt ~/output/mr/wc1

执行成功之后查看结果:

  • hdfs dfs -cat /output/0502/wc1/part-t-00000

伪分布环境下的wordcount结果

发现和本地模式下的一样,这就对了。不过小伙伴在启动伪分布的时候是不是遇到过这个问题:

未配置免密码登陆之前]
我们启动一次hadoop竟然要输入如此多次密码,很明显这是不科学的,那么要如何处理呢?答案是免密码登陆,免密码登陆的原理是非对称加密算法,具体的流程请看下图:

免密码登陆原理

下面是配置的命令:

使用非对称加密算法生成密钥对:ssh-keygen -t rsa

把自己的公钥给其他的服务器(因为当前是伪分布,所以给自己即可):ssh-copy-id -i .ssh/id_rsa.pub root@bigdata113

现在我们重新使用start-all.sh命令启动Hadoop组件,流程如下:

配置免密码登陆之后

很明显,不用去重复的输入密码了,省去了我们很多的时间。

全分布模式

全分布模式特点:正式的分布环境,用于生产。

其实全分布模式和伪分布模式的配置大部分都是相同的,只有少许差别,下面我们列出流程:

  1. 关闭防火墙

  2. 安装JDK

  3. 配置主机名 vi /etc/hosts(需要把三台主机都配置进去)

    192.168.171.112 bigdata112
    192.168.171.113 bigdata113
    192.168.171.114 bigdata114

  4. 配置免密码登陆:两两之间的免密码登陆

    • 每台机器产生自己的公钥和私钥ssh-keygen -t rsa

    • 每台机器都把自己的公钥给别人一份(含自己)

      ​ ssh-copy-id -i .ssh/id_rsa.pub root@bigdata112

      ​ ssh-copy-id -i .ssh/id_rsa.pub root@bigdata113

      ​ ssh-copy-id -i .ssh/id_rsa.pub root@bigdata114

  5. 保证每台机器的时间同步。

​ 如果时间不一样,执行MapReduce程序时可能存在问题。

​ 解决方法:使用putty中help选项下面的那个类似键盘s的图标,输入命令date -s 2018-04-15 +回车,然后下面选择要同步的服务器,最后点击send就可以了

在主节点bigdata112上配置(NameNode结点):

  1. 解压设置环境变量

    解压:tar -zxvf hadoop-2.7.3.tar.gz -C ~/training/

    设置环境变量:vi ~/.bash_progile

    HADOOP_HOME=/root/training/hadoop-2.7.3
    export HADOOP_HOME
    
    PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    export PATH

    配置完成后,通过source ~/.bash_profile使其生效

  2. 修改配置文件

   (1)配置:hadoop-env.sh 

    25行  export JAVA_HOME=/root/training/jdk1.8.0_144

   (2) hdfs-site.xml(有几个从节点,冗余度配置为几)

        <!--数据块的冗余度,默认是3-->

        <property>

          <name>dfs.replication</name>

          <value>2</value>

        </property>         

     (3) core-site.xml(注意/root/training/hadoop-2.7.3/tmp需要先创建再配置)

        <!--NameNode的地址,9000是RPC的通信端口-->

        <property>

          <name>fs.defaultFS</name>

          <value>hdfs://bigdata112:9000</value>

        </property> 

        <!--HDFS数据保存的目录,默认是Linux的tmp目录。Linux的tmp目录重新之后会清空-->

        <property>

          <name>hadoop.tmp.dir</name>

          <value>/root/training/hadoop-2.7.3/tmp</value>

        </property> 



      (4)mapred-site.xml

        <!--MR程序运行的容器是Yarn-->

        <property>

          <name>mapreduce.framework.name</name>

          <value>yarn</value>

        </property>     

      (5)yarn-site.xml

        <!--Yarn的主节点ResourceManager的地址-->

        <property>

          <name>yarn.resourcemanager.hostname</name>

          <value>bigdata112</value>

        </property>     

        <!--NodeManager运行MR任务的方式-->

        <property>

          <name>yarn.nodemanager.aux-services</name>

          <value>mapreduce_shuffle</value>

        </property> 

   (6)slaves配置从节点

    vi slaves

    bigdata113

    bigdata114

   (7)格式化NameNode

    hdfs namenode -format
  1. 把主节点上配置好的Hadoop复制到从节点

    scp -r hadoop-2.7.3/ root@bigdata113:/root/training(scp 是指网络拷贝;-r表示把指定目录下的文件及子目录都拷贝)

    scp -r hadoop-2.7.3/ root@bigdata114:/root/training

  2. 在主节点上启动 start-all.sh

以上就是Hadoop环境搭建的全部内容,后面我们会从详细知识点去介绍,比如使用HDFS实现上传、下载,MapReduce的使用,HBase的使用等等,敬请期待!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值