Hadoop完全分布式的搭建

导语:

上一篇文章之后,在这里继续做Linux与Hadoop学习笔记。

Linux配置静态IP搞定之后,我们就可以搞一个完全分布的集群来检测一下最近的学习情况啦。

Linux常用指令学习:https://blog.csdn.net/hu_belif/article/details/82389488

首先提供以下资源地址:

Hadoop的官网:http://hadoop.apache.org/

官方文档:http://hadoop.apache.org/docs/current/

下载地址:http://hadoop.apache.org/releases.html

注意1:下载binary文件可以直接使用,但是32位的编码;当然您也可以下载source文件,自己导入lib来编译一个64位的文件。

注意2:建议不要下载最新的版本,Hadoop版本在2.8.4以上即可,也不要太老。

其次大概介绍一下什么是Hadoop以及它的作用:

引用官网的一段话:

Apache™Hadoop®项目开发了用于可靠,可扩展的分布式计算的开源软件。

Apache Hadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。库本身不是依靠硬件来提供高可用性,而是设计用于检测和处理应用层的故障,从而在计算机集群之上提供高可用性服务,每个计算机都可能容易出现故障。

该项目包括以下模块:

  • Hadoop Common:支持其他Hadoop模块的常用实用程序。
  • Hadoop分布式文件系统(HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。
  • Hadoop YARN:作业调度和集群资源管理的框架。
  • Hadoop MapReduce:基于YARN的系统,用于并行处理大型数据集。

***********************************************开搞*******************************************************

 一、基础环境检测

1.首先来检测一下我们的JavaJDK的配置情况:

在terminal中键入:

Javac -version

出现了以下状态后证明环境没问题,若有问题看Linux安装jdk详解

javac 1.8.0_171

注意:Java的jdk版本必须要保证在1.7+(本人使用的1.8),版本太低则一会儿配置集群的时候会各种报错(jar包会出现不兼容或冲突)。

2.配置其他的两台虚拟机

主机的JavaJDK和静态IP以及网卡配置(上一篇文章)完毕后就可以进行克隆啦,再创造两个虚拟机,重复前面做的所有操作,保证与这台虚拟机的配置一样,当然IP与用户账户一定是不可以相同的。

三台虚拟机都打开。

3.其次我们需要检测一下我们的网络的一系列设置

在这里我们要把三台虚拟机的IP段都相互关联保存,处理一下。

首先我们先来把三台主机的IP段都保存在一台主机上(主机自己三选一)

在Terminal中键入以下命令修改主机映射:

vim /etc/hosts

三台主机的IP加用户名插入后保存。如图:

注意:这个操作是必须的,建议这样做:

 "/etc/hosts"这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName和IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的IP地址。

  我们要测试两台机器之间知否连通,一般用"ping 机器的IP",如果想用"ping 机器的主机名"发现找不见该名称的机器,解决的办法就是修改"/etc/hosts"这个文件,通过把LAN内的各主机的IP地址和HostName的一一对应写入这个文件的时候,就可以解决问题。

检测自己的网络主机是否正确:

键入命令:

vim /etc/sysconfig/network

保证上面IP所对应的用户名是当前用户名。

,没有就手动添加。

 

注意:保证三台虚拟机可以相互联络。可以ping通,按上面的配置来的话就是ping hadoop2(3)。出现下面的状态就代表可以互相联络:

 

不能联络查看防火墙是否关闭:

service iptables status

注意:Linux的三台机器都要关闭。

应该是这个状态:

不是以上状态就要运行以下命令:

service iptables stop   #临时关闭防火墙
chkconfig iptables off   #永久关闭防火墙(重启后生效)

特别特别重要)剩下的就是查看重写网卡与静态IP的配置啦,这里我就不做详述了,详细的请参阅:https://blog.csdn.net/hu_belif/article/details/82318539

 4.同步三台机器的时间

要保证三台虚拟机的时间同步,最好不要相差10秒钟以上。

查看时间的命令:

date

 修改时间的命令:

以2018年9月5日21点18分30秒为例;格式是  ----月日时分年.秒,如:

090521182018.30

分割一下就是:09/05/21/18/2018/.30

注意:年份后边有一个小数点哦。 

5.再次检测防火墙和ssh免密登录

键入命令进行检测,保证防火墙已经完全关闭,并且三台虚拟机都可以互相的联络(ping)。

shh免密登录与防火墙的设置在上文以及Linux安装jdk详解中有详细步骤,可以参阅其中步骤进行装配。

~~~~~~~~~~~~~~~~~~~~~~~~~~~环境检测通过,下一步→~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

二、Hadoop的安装与基本配置

1、安装Hadoop

这里看这篇文章:https://blog.csdn.net/hu_belif/article/details/82391003

2、配置Hadoop

进入自己Hadoop的安装路径,首先需要在hadoop安装文件下创建三个目录,tmp,datanode,namenode,分别用来存储临时文件数据和计算路径。

接着进入配置路径  /etc/hadoop/    路径下后,进行下面文件的配置;文件的打开方式均用vi 修改,cat查看。

①.

修改hadoop-env.sh及yarn-env.sh中的JAVA_HOME,与自己环境变量中的路径相同即可:

图例:

②. 

修改core-site.xml文件,复制以下(不复制‘<configuration>’)到自己的配置文件中的<configuration>标签内。

注意:把master修改为自己的用户名。

  core-site.xml 

<configuration>

 <property>

           <name>fs.defaultFS</name>

           <value>hdfs://master:9000</value>

        </property>

        <property>

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

           <value>/usr/local/hadoop/tmp</value>

         </property>

</configuration>

修改后的图例:


修改hdfs-site.xml配置,复制原理同上。

注意:把master修改为自己的用户名。

  hdfs-site.xml

<configuration>

 <property>

          <name>dfs.replication</name>
           <value>2</value>

 </property>
 <property>
               <name>dfs.namenode.secondary.http-address</name>
               <value>master:50090</value>
 </property>
 <property>
                 <name>dfs.name.dir</name>
                 <value>/usr/local/hadoop/namenode</value>
 </property>
 <property>
                <name>dfs.data.dir</name>                                                                  <value>/usr/local/hadoop/datanode</value>
 </property>

</configuration>

修改后的图例:

 

修改mapred-site.xml.template命名,不是强制的,但是为了配置更加便捷,建议把名字修改为mapred-site.xml。

然后复制原理同上的。

 mapred-site.xml.template

<configuration>

 <property>

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

    <value>yarn</value>

  </property>

</configuration>

修改后图例:

复制原理同上。

注意:把master修改为自己的用户名。

    yarn-site.xml

<configuration>

<property>

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

            <value>master</value>

</property>

<property>  

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

          <value>mapreduce_shuffle</value> 

</property>

<property>

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

          <value>true</value> 

</property>

<property>

          <name>yarn.log-aggregation.retain-seconds</name>

           <value>604800</value>

</property>

 <property>    

         <name>yarn.nodemanager.resource.memory-mb</name>

         <value>2000</value>

</property>

<property>

        <name>yarn.scheduler.maximum-allocation-mb</name>         

        <value>2000</value>                                                   

</property>                       

<property>                                    

       <name>yarn.scheduler.minimum-allocation-mb</name>                                                                                                                     <value>500</value>   

</property>      

<property>                                                                                                                                                                                                   <name>mapreduce.reduce.memory.mb</name>                                                                                                                     <value>2000</value>                    

</property>

<property>        

        <name>mapreduce.map.memory.mb</name>            

        <value>2000</value>                    

</property>

<property>   

        <name>yarn.nodemanager.vmem-pmem-ratio</name>

        <value>2.1</value>    

</property>

<property>

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

       <value>master:8032</value>

</property>          

<property>    

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

       <value>master:8030</value>

</property>

<property>         

       <name>yarn.resourcemanager.resource-tracker.address</name>                                                                                         <value>master:8031</value>                   

</property>

</configuration>

修改后图例:

修改slaves

 vi slaves  

编辑从节点,可以将主节点也作为从节点进行编辑。

  例如:  输入master,slave1,slave2或者hadoop1,2,3

图例:

三、配置从节点(其他的虚拟机)

①配置从节点

在保存完所有的设置后,我们需要同样配置其他从节点(其他几台虚拟机)。

可以硬复制,也可以将文件进行拷贝复制(下发到从节点),从master到slave1,slave2;

输入命令:

scp -r  /usr/local/hadoop/  root@slave1:/usr/local/    #将Hadoop的全部文件递归复制到slave1

scp -r  /usr/local/hadoop/  root@slave2:/usr/local/     #将Hadoop的全部文件递归复制到slave1

scp -r  /etc/profile  root@slave1:/etc/profile   #将环境变量文件复制到slave1

scp -r  /etc/profile  root@slave2:/etc/profile   #将环境变量文件复制到slave1

执行情况如下所示:

        

注意:在这个过程中不要随意点击鼠标,否则将导致死机。

②首次启动预备

所有的情况都已经配置完毕后,第一次启动Hadoop必须进行初始化(格式化),以后就不需要了。

注意:如果修改配置或更改Hadoop的其他设置后还需要格式化,需要先删除主机下的tmp,namenode,datanode三个文件夹,然后在新建tmp,namenode,datanode这个三个文件夹,最后才能再次格式化。三台虚拟机全都都要进行此操作。

现在首先需要对Hadoop进行系列的格式化:

命令:

hadoop namenode -format 

 ③正式启动

格式化namenode后,就可以启动了。

start-dfs.sh    #启动一(指启动分布式存储)
start-all.sh    #启动二(全部启动,推荐使用)

四、成功之后的检测

①可以访问下面的网站,检测:

 

DaemonWeb InterfaceNotes
NameNodehttp://port_id:50070Default HTTP port is 50070.
ResourceManagerhttp://port_id:8080Default HTTP port is 8088.
MapReduce JobHistory Serverhttp://port_id:19888Default HTTP port is 19888.

port_id指的是主机的IP地址,如上图中的地址栏所示。


②用MapReduce计算一下pi的值

测试mapreduce(分布式算法)(hadoop自带的程序,计算pi的值):

进入Hadoop安装目录下的     /share/hadoop/mapreduce/

然后执行:

 hadoop jar hadoop-mapreduce-examples-2.8.4.jar pi 20 50

结果:


③jps验证

 

这样基本搭建已经完成,形成节点之间的连接。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值