Hadoop集群搭建

目录

 

Hadoop简介

Hadoop的架构

Hadoop如何工作?

Hadoop的优点

Hadoop集群搭建

SSH免密码登录

配置两个从节点


Hadoop简介

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

Hadoop的架构

在其核心,Hadoop主要有两个层次,即:

  • 加工/计算层(MapReduce),以及
  • 存储层(Hadoop分布式文件系统)。

MapReduce

MapReduce是一种并行编程模型,用于编写普通硬件的设计,谷歌对大量数据的高效处理(多TB数据集)的分布式应用在大型集群(数千个节点)以及可靠的容错方式。 MapReduce程序可在Apache的开源框架Hadoop上运行。

Hadoop分布式文件系统

Hadoop分布式文件系统(HDFS)是基于谷歌文件系统(GFS),并提供了一个设计在普通硬件上运行的分布式文件系统。它与现有的分布式文件系统有许多相似之处。来自其他分布式文件系统的差别是显著。它高度容错并设计成部署在低成本的硬件。提供了高吞吐量的应用数据访问,并且适用于具有大数据集的应用程序。

除了上面提到的两个核心组件,Hadoop的框架还包括以下两个模块:

  • Hadoop通用:这是Java库和其他Hadoop组件所需的实用工具。

  • Hadoop YARN :这是作业调度和集群资源管理的框架.

Hadoop如何工作?

建立重配置,处理大规模处理服务器这是相当昂贵的,但是作为替代,可以联系许多普通电脑采用单CPU在一起,作为一个单一功能的分布式系统,实际上,集群机可以平行读取数据集,并提供一个高得多的吞吐量。此外,这样便宜不到一个高端服务器价格。因此使用Hadoop跨越集群和低成本的机器上运行是一个不错不选择。

Hadoop运行整个计算机集群代码。这个过程包括以下核心任务由 Hadoop 执行:

  • 数据最初分为目录和文件。文件分为128M和64M(128M最好)统一大小块。
  • 然后这些文件被分布在不同的群集节点,以便进一步处理。
  • HDFS,本地文件系统的顶端﹑监管处理。
  • 块复制处理硬件故障。
  • 检查代码已成功执行。
  • 执行发生映射之间,减少阶段的排序。
  • 发送排序的数据到某一计算机。
  • 为每个作业编写的调试日志。

Hadoop的优点

  1. 高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。

  2. 高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

  3. 高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

  4. 高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

  5. 低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。

Hadoop集群搭建

1个master,2个slaver

3个节点的IP地址及角色

节点主机名

IP地址

角色

lb01

192.168.231.141

namenode节点

web01

192.168.231.142

datanode节点

web02

192.168.231.143

datanode节点

注意:本机节点主机名可以修改为master,slaver01,slaver02,好辨识一些,当然,下边修改配置文件时,也要进行替换。

1.创建hadoop用户及用户组

[root@lb01 ~]# groupadd hadoop

[root@lb01 ~]# useradd -g hadoop  hadoop

[root@lb01 ~]# passwd hadoop

Changing password for user hadoop.

New password:

BAD PASSWORD: it is based on a dictionary word

BAD PASSWORD: is too simple

Retype new password:

passwd: all authentication tokens updated successfully.

再创建一个hadoop用户一是为了怕不熟悉的人误操而损坏操作系统核心内容

二是为了方便同一个组的用户可以共享hadoop集群

 

上传hadoop和jdk压缩包到/usr /local目录下

[root@lb01 local]# ls

 hadoop-2.7.7.tar.gz  jdk-8u191-linux-x64.tar.gz

进行解压:

[root@lb01 local]# tar xf hadoop-2.7.7.tar.gz

[root@lb01 local]# tar xf jdk-8u191-linux-x64.tar.gz  

 

[root@lb01 local]# mv hadoop-2.7.7 /home/hadoop/hadoop2.7

[root@lb01 local]# mv jdk1.8.0_191 /home/hadoop/jdk1.8

修改权限

[root@lb01 hadoop]# chown -R hadoop.hadoop hadoop2.7/

[root@lb01 hadoop]# chown -R hadoop.hadoop jdk1.8/

导入JAVA环境

[root@lb01 local]# vim /etc/profile

export JAVA_HOME=/home/hadoop/jdk1.8

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

export PATH=.:$JAVA_HOME/bin:$PATH

使配置立即生效

[root@lb01 local]# source /etc/profile

查看JAVA是否安装成功

[root@lb01 lib]# java -version

java version "1.8.0_191"

Java(TM) SE Runtime Environment (build 1.8.0_191-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

导入hadoop环境

export JAVA_HOME=/home/hadoop/jdk1.8

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

export HADOOP_HOME=/home/hadoop/hadoop2.7

export PATH=.:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH

使用hadoop命令,查看hadoop是否安装成功,若出现如下内容,则说明安装成功

[root@lb01 local]# 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 <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 <srcurl> <desturl> copy file or directories recursively

  archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive

  classpath            prints the class path needed to get the

  credential           interact with credential providers

                       Hadoop jar and the required libraries

  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.

修改hadoop2.7的配置文件:

1、配置/home/hadoop/hadoop2.7/etc/hadoop目录中的hadoop-env.sh、yarn-env.sh、mapred-env.sh的JAVA_HOME值,向文件中添加:

[hadoop@lb01 hadoop]$ vim hadoop-env.sh

[hadoop@lb01 hadoop]$ vim yarn-env.sh

[hadoop@lb01 hadoop]$ vim mapred-env.sh

 

export JAVA_HOME=/home/hadoop/jdk1.8

2、配置/home/hadoop/hadoop2.7/etc/hadoop下的slavers,这个文件中保存了所有slaver节点:

把其中的localhost删除了,添加slave节点

[hadoop@lb01 hadoop]$ vim slaves

web01

web02

添加后,向/etc/hosts中添加主机名解析

192.168.231.142 web01

192.168.231.143 web02

192.168.231.141 lb01

3、配置core-site.xml文件:

<configuration>

    <property>

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

        <value>file:/home/hadoop/hadoop2.7/tmp</value>

    </property>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://lb01:9000</value>

    </property>

</configuration>

4、配置hdfs-site.xml文件:

<configuration>

   <property>

                <name>dfs.namenode.name.dir</name>

                <value>file:/home/hadoop/hadoop2.7/hdfs/name</value>

        </property>

        <property>

                <name>dfs.datanode.data.dir</name>

                <value>file:/home/hadoop/hadoop2.7/hdfs/data</value>

        </property>

        <property>

#设置HDFS存储文件的副本数

                <name>dfs.replication</name>

                <value>2</value>

        </property>

        <property>

        <name>dfs.namenode.secondary.http-address</name>

        <value>lb01:50090</value>

        </property>

</configuration>

5、配置mapred-site.xml

[hadoop@lb01 hadoop]$ mv mapred-site.xml.template mapred-site.xml

[hadoop@lb01 hadoop]$ vim mapred-site.xml

<configuration>

<property>

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

                <value>yarn</value>

                <final>true</final>

        </property>

        <property>

        <name>mapreduce.jobhistory.address</name>

        <value>lb01:10020</value>

    </property>

    <property>

        <name>mapreduce.jobhistory.webapp.address</name>

        <value>lb01:19888</value>

    </property>

</configuration>

6、配置yarn-site.xml
 

<configuration>


<!-- Site specific YARN configuration properties -->

 <property>

            <name>yarn.acl.enable</name>

               <value>false</value>

   </property>

   <property>

            <name>yarn.admin.acl</name>

                <value>*</value>

   </property>

    <property>

          <name>yarn.log-aggregation-enable</name>

                  <value>false</value>

    </property>

    <property>

     <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

            <value>org.apache.hadoop.mapred.ShuffleHandler</value>

    </property>

    <property>

              <name>yarn.resourcemanager.address</name>

                 <value>lb01:8032</value>

    </property>

    <property>

            <name>yarn.resourcemanager.scheduler.address</name>

                     <value>lb01:8030</value>

    </property>

<property>

      <name>yarn.resourcemanager.resource-tracker.address</name>

                <value>lb01:8035</value>

    </property>

    <property>

            <name>yarn.resourcemanager.admin.address</name>

                   <value>lb01:8033</value>

    </property>

    <property>

          <name>yarn.resourcemanager.webapp.address</name>

                  <value>lb01:8088</value>

   </property>

  <property>

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

                  <value>lb01</value>

  </property>

   <property>

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

              <value>mapreduce_shuffle</value>

  </property>


</configuration>

修改完配置之后,向/etc/hosts文件中添加解析(三台主机都进行添加):

192.168.231.160 MASTER

192.168.231.161 SLAVER01

192.168.231.162 SLAVER02

SSH免密码登录

hadoop集群交互时,要进行输入密码,很麻烦,而用SSH提供公钥登录,就会省去输入密码的步骤,下面进行配置SSH免密码登录:

生成秘钥和公钥:

[hadoop@lb01 ~]$ ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):

Created directory '/home/hadoop/.ssh'.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/hadoop/.ssh/id_rsa.

Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.

The key fingerprint is:

32:63:b7:b0:db:80:29:59:aa:7d:4d:11:d7:00:fb:5d hadoop@lb01

The key's randomart image is:

+--[ RSA 2048]----+

|      ...o       |

|      ... .      |

|      .o    E    |

|      .. . .     |

|    . *.S .      |

|   + +.B .       |

|  + ooo .        |

| o .. .+         |

|. ..  . .        |

+-----------------+

[hadoop@lb01 ~]$ cd .ssh/

[hadoop@lb01 .ssh]$ ls

id_rsa  id_rsa.pub

然后把公钥分配给slave节点:

[hadoop@lb01 ~]$ ssh-copy-id -i .ssh/id_rsa.pub hadoop@web01

[hadoop@lb01 ~]$ ssh-copy-id -i .ssh/id_rsa.pub hadoop@web02

测试:

[hadoop@lb01 ~]$ ssh web01

Last login: Thu Nov  8 23:11:56 2018 from 192.168.231.141

[hadoop@web01 ~]$

配置两个从节点

将主节点的hadoop2.7和jdk1.8复制到两个从节点(web01,web02,已添加hadoop用户,传完之后,修改属主,属组):

[hadoop@lb01 ~]$ scp -r hadoop2.7/ hadoop@web01:/home/hadoop

[hadoop@lb01 ~]$ scp -r jdk1.8/ hadoop@web01:/home/hadoop

[hadoop@lb01 ~]$ scp -r hadoop2.7/ hadoop@web02:/home/hadoop

[hadoop@lb01 ~]$ scp -r jdk1.8/ hadoop@web02:/home/hadoop

两个从节点都进行chown -R hadoop.hadoop  hadoop2.7/

chown -R hadoop.hadoop  jdk1.8/

传输完之后,添加java和hadoop的安装环境(root用户进行添加,并进行hadoop命令测试),参考上边

格式化hadoop

[hadoop@lb01 ~]$ hdfs namenode -format

18/11/08 23:23:21 INFO util.ExitUtil: Exiting with status 0

出现 status 0 时为正确

用jps查看已启动的hadoop进程

[hadoop@lb01 ~]$ jps

12884 ResourceManager

13141 Jps

12535 NameNode

12734 SecondaryNameNode

[hadoop@web01 ~]$ jps

8949 DataNode

9175 Jps

9051 NodeManager

[hadoop@web02 ~]$ jps

8949 DataNode

9175 Jps

9051 NodeManager

这样一个简单的Hadoop集群就搭建完成了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

real向往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值