Hadoop集群搭建


Hadoop集群搭建


在搭建Hadoop的步骤主要分一下几点:

第一:安装虚拟机( 操作系统使用的是Ubuntu14.04
第二:找几个闲置的IP地址
第三:安装ssh(主要用于无秘钥登录)
第四:安装Java环境和Scala(Scala主要是为后边搭建spark集群用的)
第五:安装Hadoop(本实验使用的是Hadoop-2.7.1)

下面为大家介绍搭建Hadoop集群的详细步骤:

      安装虚拟机:我是通过在自己电脑的虚拟机(VMwarevSphere)远程访问服务器,在服务器上搭建的Hadoop集群。(其实也可以在自己电脑上通过VMware在自己电脑上搭建。或者不用虚拟机用真实的电脑也行)

一、在安装虚拟机的时候要注意几点

虚拟的空间不能太小、特别是虚拟的内存要大一点在10G左右,然后就是虚拟磁盘在30G以上。要不然到后边跑数据的时候内存和虚拟磁盘的容量不够用。


在这里就不演示怎么创建虚拟机了。以下就是我创建好的虚拟机,一个Master和三个Slave。原来创建了8个Slave,但是因为内存不够,跑数据跑不起来,就删了又重新创建 了,这次搭建Hadoop可费了好大力气,之前搭建的一次已经好早了没有做笔记,这次专门记下详细的笔记。以供大家参考和自己以后再次用到。



二、给每一台虚拟机都配置IP地址
  在Master上配置IP地址:
      用Ctrl+Alt+T打开终端窗口,输入如下命令:

$ sudo gedit /etc/network/interface




配置完IP地址要修改主机名,在终端输入

$ sudo gedit /etc/hostname

然后把主机名修改成Master。然后再配置hosts文件。在终端输入

$ sudo gedit /etc/hosts




接下来:如果你安装Ubuntu的时候使用的不是Hadoop用户,那么就需要创建一个Hadoop用户。




同样是在终端输入 :

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

  这条命令可以创建一个Hadoop用户。另外要给Hadoop用户设置密码,在终端输入

$ sudo passwd hadoop

,系统提示请输入密码,然后输入两次以后就行了,最后就是把Hadoop用户添加进去,再输入


$ sudo adduser hadoop sudo

。最后关机重启,刚才创建的用户和网络配置还有hosts、主机名都会生效。(记得一定要重启,要不然不会生效的哦

接下来就等着上网测试吧。(注意:同样创建的其他Slave也要更改。)

三、刚刚创建的Hadoop用户可以上网了

     那么接下来要把系统的一些软件更新一下,要不然后边安装其他软件会提示安装不上去。所以赶紧的先更新再忙其他的。在终端输入

$ sudo apt-get update

      如果上面提示:W:无法下载之类的,那就打开左边的设置(就是小齿轮)→软件和更新  点击下载自的向下的小三角 在列表中选择mirrors.163.com 或则mirrors.aliyun.com  选择服务器 关闭 重新载入。(完成以后再更新一下

 $ sudo apt-get update

就正常了。
          有的实验教程上还用到了vim编辑器。我很少用,个人感觉不太习惯,就用了的gedit编辑了。如果喜欢vim那就在终端输入 

$ sudo apt-get install vim

然后点击Y就可以在命令行安装了。

四、集群搭建Hadoop需要配置SSH无秘钥登录

首先咱们先说说为什么要安装SSH并且配置“  ”。Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动后,NameNode是通过SSHSecure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到 NameNode )安装SSH需要在终端输入

$ sudo apt-get install openssh-server

     同样此时应该也在Slave们上也安装SSH;

$ sudo apt-get install openssh-server

安装以后可以用下面的命令登录主机:

$ ssh localhost

  然后首次登录SSH会有登录提示,在这输入yes即可。在然后输入Hadoop的密码就OK了。 但是这样每次都要输入密码,太麻烦了是吧。所以我们就要充分利用SSH的特点让她生成一个公钥然后传递给各个子节点(Slave)。




在终端输入如下命令:


$ exit      #退出刚才登陆的ssh localhost
$ cd ~/.ssh/     #如果没有该目录,就先执行ssh localhost
$ rm ./id_rsa*     #删除之前生成的公钥
$ ssh-keygen -t rsa     #这个主要是生成公钥,之后一路回车就行了
$ cat ./id_rsa.pub >> ./authorized_keys     #让生成的公钥加入授权,然后Master就可以无秘钥登陆了




$ scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop     #这样就可以把刚才生成的公钥传递给所有的Slave了

SCP是secure copy 的简写,用于在Linux下进行远程拷贝文件,类似于cp命令,不过CP只能在本机中拷贝,执行scp需要输入Hadoop的登陆密码。




接下来需要登陆Slave节点,将SSH公钥加入授权


$ mkdir ~/.ssh     #如果不存在给文件夹需要先创建,如果已经存在则可以忽略
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
$ rm ~/id_rsa.pub     #用完就可以删除了
$ ssh Slave1     #试试能否在Master上登录Slave1
$ exit      #退出

这样Master节点就可以登陆任意一台Slave了。哈哈哈哈哈
四、安装Java和Scala(Scala是因为后边要搭建spark,所以在这里就提前给安装上了)
     1、安装Java(我安装的是Java-8-oracle)
          输入以下命令:

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update     #先更新一下,防止下一步安装Java时候装不上
$ sudo apt-get install Oracle-java8-Installer     #安装Java8


          配置环境变量:
         

$ sudo gedit /etc/profile


        在文件的最下边添加一行环境变量如下:

export   JAVA_HOME=/usr/lib/jvm/java-8-oracle
export   JRE_HOME=/usr/lib/jvm/java-8-oracle





然后输入

$ source  /etc/profile


此时Java就安装完毕了.(此时在Slave们上也要安装Java,或者直接从Master上给Slave们直接发送过去)
2、安装Scala
     1、从网上直接下载Scala压缩包  http://downloads.typesafe.com/scala/(我下载的是Scala-2.10.5.tgz)
     2、解压    
 
$ sudo mkdir /usr/local/scala
$ sudo tar -zxf scala-2.10.5.tgz -C /usr/local/scala

    (# -zxf 和-zxvf 都是解压)
     3、配置环境变量

$ sudo gedit /etc/profile

          在文本内输入:    
export     SCALA_HOME=/usr/local/scala/scala-2.10.5
 

     
          然后关闭文本,在终端执行,

$ source /etc/profile

   #就是让配置环境生效。
     4、验证是否安装成功
          在终端输入

$ scala -version

  如果出来
Scala code runner version  2.10.5 -- Copyright 2002-2013, LAMP/EPFL
那么表示成功了
五、在Master上安装Hadoop
     1、先下载Hadoop。(我下载的是Hadoop-2.7.1的版本)
     下载好的Hadoop-2.7.1.tar.gz 是在Hadoop用户下的/下载 目录里,但是我们最好把她放在home文件下。
       2、解压hadoop文件

$ sudo tar -zxf hadoop-2.7.1.tar.gz -C /usr/local     #解压到 /usr/local文件夹中
$ cd /usr/local     #切换到 usr/local
$ sudo mv ./hadoop-2.7.1/ ./hadoop     #更改文件夹的名称为hadoop
$ sudo chown -R hadoop:hadoop ./hadoop     #给hadoop分配权限

     3、创建一个名为tmp的文件夹:


$ mkdir /usr/local/hadoop/tmp     #创建这个文件夹是为下边的hadoop一些文件配置用的临时文件夹
  
     4、给hadoop配置环境变量

export HADOOP_HOME=/usr/local/hadoop   
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH



     
配置hadoop-env.sh:

$ sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh
在文件的末尾加上Java的安装路径

export JAVA_HOME=/usr/lib/jvm/java-8-oracle

5、配置hadoop集群环境,需要修改/usr/local/hadoop/etc/hadoop中的几个配置文件。
     1、配置文件slaves,默认的slaves文件中只有一个localhost。所以要修改文件的配置,最好配成IP地址的形式,也就是每行一个IP地址。
输入 

$ cd /usr/local/hadoop/etc/hadoop
$ sudo gedit slaves

在文本中配置如下

59.67.77.15             #Slave1
59.67.77.16             #Slave2
59.67.77.17             #Slave3
     2、配置masters文件.同样是最好配置成IP地址的形式,只写一行master的IP地址就行
输入:

$ sudo gedit masters

在文本中输入如下配置:

59.67.77.12
     3、配置hadoop的核心文件core-site.xml

$ sudo gedit core-site.xml
配置内容:
<configuration>
     <property
>
        <name
>hadoop.tmp.dir</name>
        <value
>/usr/local/hadoop/tmp</value>
        <description
>A base  for other temporary directories.</description>
     <
/property>

     <property
>
         <name
>fs.defaultFS</name>
         <value
>hdfs://59.67.77.12:9000</value>
     <
/property>

     <property
>
         <name
>fs. default.name</name>
         <value
>hdfs://59.67.77.12:9000</value>
     <
/property>

     <property
>
         <name
>hadoop.native.lib</name>
         <value
> false</value>
     <
/property>

     <property
>
         <name
>hadoop.proxyuser.hadoop.hosts</name>
         <value
>*</value>
     <
/property>

     <property
>
         <name
>hadoop.proxyuser.hadoop.groups</name>
         <value
>*</value>
     <
/property>
</configuration>
    
4、配置hdfs-site.xml我这里配置的是三个slave节点,所以dfs.replication 的值几设为3。

$ sudo gedit hdfs-site.xml


<configuration>

   <property
>
     <name
>dfs.replication</name>
     <value
> 3</value>
   <
/property>

   <property
>
      <name
>dfs.namenode.name.dir</name>
      <value
>/usr/local/hadoop/dfs/name</value>
   <
/property>

   <property
>
       <name
>dfs.datanode.data.dir</name>
       <value
>/usr/local/hadoop/dfs/data</value>
   <
/property>

   <property
>
       <name
>dfs.webhdfs.enabled</name>
       <value
> true</value>
   <
/property>

   <property
>
       <name
>dfs.permissions</name>
       <value
> false</value>
   <
/property>

<
/configuration>

     5、配置mapred-site.xml.template文件,(为了统一命名,我们需要把mapred-site.xml.template 文件修改为maprec-site.xml文件)
     输入:
$ sudo mv ./mapred-site.xml.template/ ./mapred-site.xml     #修改文件名
$ sudo gedit mapred-site.xml     #打开文本开始编辑
然后编辑如下:

<configuration>
     <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
     </property>

     <property>
          <name>mapreduce.jobhistory.address</name>
          <value>http://59.67.77.12:10020</value>
     </property>

     <property>
          <name>mapreduce.jobhistory.webapp.address</name>
          <value>Master:19888</value>
     </property>
</configuration>
   
  6、配置yarn-site.xml文件:

$ sudo gedit 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>
</configuration>
配置好hadoop的文件以后需要将hadoop复制到各个slave们:(注意:这里重点说明一下,一定要先压缩打包再复制到各个slave们,最后在各个slave上解压。这样的好处就是防止直接传输过程中有的文件会丢失。一定一定一定要先压缩打包。)

$ cd /usr/local
$ sudo rm -r ./hadoop/tmp      # 删除 Hadoop 临时文件
$ sudo rm -r ./hadoop/logs/*      # 删除日志文件
$ tar -zcf ~/hadoop.master.tar.gz ./hadoop      # 先压缩再复制
$ cd
$ scp ./hadoop.master.tar.gz Slave1:/home/hadoop     #复制到slave们
同样复制到其他slave们。
然后再Slave1节点上执行:
$ sudo rm -r /usr/local/hadoop # 删掉旧的(如果存在)
$ sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
$ sudo chown -R hadoop /usr/local/hadoop
同样在其他slave们节点上重复上面的操作

六、修改各个Slave们的环境变量

export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export JRE_HOME=/usr/lib/jvm/java-8-oracle
export SCALA_HOME=/usr/scala/scala-2.10.5
export HADOOP_HOME=/usr/local/hadoop

export CLASSPATH=$CLASS_PATH::$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export PATH= $JAVA_HOME:$HADOOP_HOME/bin:   $PATH
export PATH=$HADOOP_HOME/sbin: $PATH
export PATH=   $SCALA_HOME/bin:$PATH

   第一次启动hadoop需要在Master上格式化一下,
$ hdfs namenode -format
    现再就可以启动hadoop了。

$ start-dfs.sh
$ start-yarn.sh

通过jps可以查看各个节点启动情况,正确的话会出现如下所示:




同样也可以登录     http://master:8088/cluster访问web界面。

关系Hadoop集群同样也是在Master节店上执行:

$ stop-yarn.sh
$ stop-dfs.sh

到这里hadoop的讲解就结束了,希望对读者有帮助
          
        





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值