zoukankan      html  css  js  c++  java
  • Hadoop全分布式安装

    快放假了,走之前想了解一下Hadoop的基础。首先呢,就得了解一下Hadoop的环境怎么搭建。网上一搜教程一大堆,新的,旧的,简直看的人毫无头绪。相信不少新人,肯定也是在搭建环境时一头雾水。正好自己也借着这次搭建Hadoop的机会,好好整理一下,也让学习Hadoop的新人少走一些弯路。

    本教程主要参考教程1(http://www.w2(此处不输入)bc.com/Article/19645)和教程2(http://m.blog.csdn.net/blog/index?username=tangxinyu318),感谢原作者的付出,这两篇文章基本解决了我很多的困惑,如果本文描述不清,欢迎大家阅读原文。

    学习Hadoop,首先要了解一下Hadoop的三种运行模式:

    1、单机模式(standalone Mode)

    单机模式是Hadoop的默认模式。当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置。在这种默认模式下所有3个XML文件均为空。当配置文件为空时,Hadoop会完全运行在本地。因为不需要与其它节点交互,单机模式就不使用HDFS,也不加载任何Hadoop地守护进程。该模式主要用于开发调试MapReduce程序地应用逻辑。

    2、伪分布模式(Pseudo-Distributed Mode)

    伪分布模式在“单节点集群”上运行Hadoop,其中所有地守护进程都运行在同一台机器上。该模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。

    3、全分布模式(Fully Distributed Mode)

         Hadoop守护进程运行在一个集群上。

    总结看过的所有教程,基本上都是在windows环境下使用VMvare虚拟机安装ubuntu或者Centos系统搭建Hadoop环境。

    本教程是在Win10下使用Vmvare虚拟机装载ubuntu14.04稳定版搭建Hadoop的环境。

    一、准备工作

    1、安装虚拟机环境

         Vmware,收费产品,占内存较大。

         Oracle的VirtualBox,开源产品,占内存较小,但安装ubuntu过程中,重启会出错。

    我选Vmware。

    2、安装操作系统

         Centos,红帽开源版,接近于生产环境。

         Ubuntu,操作简单,方便,界面友好。

    我选Ubuntu14.04稳定版. 64位

    3、安装一些常用的软件

    在每台linux虚拟机上,安装:vim,ssh

          sudo apt-get install vim  (注:一定要重新安装vim,Linux自带的是vi,vim是vi的升级增强版)

          sudo apt-get install ssh

    在客户端,也就是win7上,安装SecureCRT,Winscp或putty,这几个程序,都是依靠ssh服务来操作的,所以前提必须安装ssh服务。

    service ssh status 查看ssh状态。如果关闭使用service ssh start开启服务。

         SecureCRT,可以通过ssh远程访问linux虚拟机。

         winSCP或putty,可以从win7向linux上传文件。

    三、全分布模式下hadoop的安装

    (1)修改三台虚拟机的机器名

    分别修改三台主机名为:master、slave1、slave2

    sudo vi /etc/hostname

    (2)设置IP地址

    大家会发现好多教程都说要设置静态IP,设置的方式教程也有。在这我遇到的疑惑是按照教程的设置方法后,除了ping不同(虽然在同一网段),而且虚拟机无法上网。这在更新ubuntu系统软件的时候非常不方便。

    最后我的处理方法是按照教程http://blog.csdn.net/u010666884/article/details/51832371,设置VMnet8,选择NAT设置,设置网段在192.168.1.0~255,还是支持本地DHCP分配IP地址。这样三个IP地址就在同一网段了,且查询IP地址,虚拟机每次重启后IP地址也没变化。所以我直接用系统分配的IP地址去配置hosts文件。

    (3)修改/etc/hosts文件

    hosts文件和windows上的功能是一样的。存储主机名和ip地址的映射。在三台机器的/etc/hosts的内容中添加如下内容:

    192.168.1.108  master

    192.168.1.129  slave1

    192.168.1.128  slave2

    (4)设置ssh免密输入

    1)产生密钥

    ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa

    会产生一对,其中id_rsa是私钥,id_rsa.pub是公钥。

    2)导入authorized_keys

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

    3)试验看是否安装成功

    #查看是否有sshd进程

    ps -e | grep ssh

    尝试登录本地

    ssh localhost

    4)远程无密码登录

    #进入master的.ssh目录

    scp authorized_keys hadoop@slave1:~/.ssh/authorized_keys_master #hadoop是用户名

    #进入slave1、slave2的.ssh目录

    cat authorized_keys_master >> authorized_keys

    注意:第四步要在slave上重复,要使三者都能够无密码相互登录,重复完后可以利用如下命令试验,第一次需要输入密码绑定

    注意:我的主机是连接的路由无线网络,我遇到了一个问题,就是在虚拟机网络重连后master可以登录slave2,但是过一会后就发现老是connection refused,就因为这个问题我还重新安装了几次,网络上的方法都试了也不管用,后来发现,原来是我的虚拟机ip与路由局域网中的其他机器Ip冲突,千万要保证局域网内的Ip不要和虚拟机的ip冲突

    (5)安装jdk

    首先进入到jdk tar.gz所在的文件目录,我的是在Downloads目录下,所以命令是

    cd ~/Downloads

      然后将tar.gz文件解压到安装目录,我的jdk压缩包名是jdk-7u67-linux-x64.tar.gz,而且我希望它安装在/usr/local目录下,所以命令是

    sudo tar zxvf jdk-7u67-linux-x64.tar.gz -C /usr/local

       然后进入到/usr/local目录下

    cd /usr/local

       再输入

    ls

       即可看到里面包含一个叫jdk1.7.0_67类似的文件(文件名与所安装的JDK版本有关)

    wps4C07.tmp

       解压完毕后,就是配置环境变量了。关于环境变量的配置多种方法,我采用的是在/.bashrc文件中配置。

       利用命令:

    sudo gedit ~/.bashrc

       在打开的文件的末尾添加以下信息:

    export JAVA_HOME=/usr/local/jdk1.7.0_67       #这里添加的是jdk所在的安装目录
    export JRE_HOME=${JAVA_HOME}/jre 
    export CLASSPATH=.:JAVAHOME/lib:JAVAHOME/lib:{JRE_HOME}/lib 
    export PATH=JAVAHOME/bin:JAVAHOME/bin:PATH 

       我的添加如下:

    wps4C18.tmp

       保存后关闭,进入终端,source一下。

    source ~/.bashrc

       接下来设置默认的JDK

    sudo update-alternatives --install /usr/bin/java java /usr/local/jdk1.7.0_67/bin/java 300 
    sudo update-alternatives --install /usr/bin/javac javac /usr/local/jdk1.7.0_67/bin/javac 300 

       设置完成后,输入java -version查看jdk信息。

    wps4C28.tmp

       查看到如上信息,说明jdk安装成功。

    (6)hadoop配置

    Master配置hadoop,并将hadoop文件传输到slave节点。

    1)解包移动

    #解压hadoop包

    tar -zxvf hadoop...

    #将安装包移到/usr目录下

    mv hadoop... /usr/hadoop

    2)新建文件夹

    #在/usr/hadoop目录下新建如下目录(root)

    mkdir /dfs

    mkdir /dfs/name

    mkdir /dfs/data

    mkdir /tmp

    3)配置文件:hadoop-env.sh(文件都在/usr/hadoop/etc/hadoop中)

    修改JAVA_HOME值(export JAVA_HOME=/usr/java)

    4)配置文件:yarn-env.sh

    修改JAVA_HOME值(export JAVA_HOME=/usr/java)

    5)配置文件:slaves

    将内容修改为:

    slave1

    slave2

    6)配置文件:core-site.xml

    <configuration>

           <property>

                    <name>fs.defaultFS</name>

                    <value>hdfs://master:8020</value>

           </property>

           <property>

                    <name>io.file.buffer.size</name>

                    <value>131072</value>

            </property>

           <property>

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

                   <value>file:/usr/hadoop/tmp</value>

                   <description>Abase for other temporary   directories.</description>

           </property>

            <property>

                   <name>hadoop.proxyuser.u0.hosts</name>

                   <value>*</value>

           </property>

           <property>

                   <name>hadoop.proxyuser.u0.groups</name>

                   <value>*</value>

           </property>

    </configuration>

    7)配置文件:hdfs-site.xml

    <configuration>

           <property>

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

                   <value>master:9001</value>

           </property>

         <property>

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

                 <value>file:/usr/hadoop/dfs/name</value>

           </property>

          <property>

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

                  <value>file:/usr/hadoop/dfs/data</value>

           </property>

           <property>

                   <name>dfs.replication</name>

                   <value>3</value>

            </property>

            <property>

                     <name>dfs.webhdfs.enabled</name>

                      <value>true</value>

             </property>

    </configuration>

    8)配置文件:mapred-site.xml

    <configuration>

              <property>                                                                  

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

                    <value>yarn</value>

               </property>

              <property>

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

                      <value>master:10020</value>

              </property>

              <property>

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

                    <value>master:19888</value>

           </property>

    </configuration>

    9)配置文件:yarn-site.xml

    <configuration>

            <property>

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

                   <value>mapreduce_shuffle</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>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>

          <property>

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

                   <value>master:8033</value>

           </property>

           <property>

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

                   <value>master:8088</value>

           </property>

    </configuration>

    10)将hadoop传输到slave1和slave2根目录

    scp -r /usr/hadoop u0@slave1:~/

    (7)配置环境变量,并启动hadoop,检查是否安装成功

    1)配置环境变量

    #root模式编辑/etc/profile

    vim /etc/profile

    #以上已经添加过java的环境变量,在后边添加就可以

    export PATH=$PATH:/usr/java/bin:/usr/java/jre/bin:/usr/hadoop/bin:/usr/hadoop/sbin

    2)启动hadoop(要在hadoop用户下启动)

    #注意最后单词带‘-’

    hadoop namenode -format

    start-all.sh

    3)查看启动进程

    wps4C49.tmp

    wps4C4A.tmp

  • 相关阅读:
    软件工程第二次作业
    软件工程第一次作业
    5T-时延小结
    4T--5G网络时延
    2T--网络切片
    1T--5G 三大应用场景
    2020软件工程第一次作业
    软件工程最后一次作业
    软件工程第四次作业
    软件工程第三次作业
  • 原文地址:https://www.cnblogs.com/iwzj/p/6415482.html
Copyright © 2011-2022 走看看