zoukankan      html  css  js  c++  java
  • ubuntu上Hadoop三种运行模式的部署

    Hadoop集群支持三种运行模式:单机模式、伪分布式模式,全分布式模式,下面介绍下在Ubuntu下的部署

    (1)单机模式

    默认情况下,Hadoop被配置成一个以非分布式模式运行的独立JAVA进程,适合开始时的调试工作。在eclipse中开发用的就是单机模式,这时不用HDFS。
    好的如果没有安装JDK,那么安装步骤如下:
    先到官网下载JDK的linux版本,下载后直接加压到相应目录,这样JDk就安装好了。接下来配置环境变量
    sudo gedit /etc/profile 
    

      加入下面代码

    #set java environment
    
    JAVA_HOME=/home/*******/jdk1.7.0_09     
    
    export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
    
    export PATH=$JAVA_HOME/bin:$PATH 
    

    java_home的路径是自己本机上的路径。保存退出后需要注销当前用户,重新登录。

    然后打开控制台输入java -version显示java的版本等信息表明配置成功。
    将下载好的hadoop解压,重新命名为hadoop(这是为了方便以后到操作)。进入conf文件夹下,在hadoop-env.sh文件中做修改,在第九行左右到位置中有#export JAVA_HOME=*******这样到字样,首先将#(这里#为注释到作用)去掉,修改JAVA_HOME的值为你机器中jdk到文件路径即可,这里到值和/etc/profile是相同的。
    现在可以单机模式运行一个Hadoop程序了,确定当前路径是Hadoop文件夹
    bin/hadoop jar hadoop-ex*.jar wordcount conf output
    conf是输入文件夹,output是输出文件夹,所以保证conf文件夹是存在的,并且有文件。

    (2)伪分布式模式

    伪分布式模式是一种单点运行模式,所有进程(NameNode、Secondary NameNode、JobTracker、DateNode、TaskTracker)都运行在仅有的一个节点上,需要用到HDFS。
    首先配置三个XML文件,文件路径在hadoop目录下的conf文件夹。
    core-site.xml
    <configuration>
         <property>
             <name>fs.default.name</name>
             <value>hdfs://localhost:9000</value>
         </property> 
         <property>
             <name>hadoop.tmp.dir</name>
             <value>/home/****/hadoop/logs</value>
         </property>
    </configuration>
    

     hdfs-site.xml

    <configuration>
         <property>
             <name>dfs.replication</name>
             <value>1</value>
         </property>
    </configuration>
    

    mapred-site.xml

    <configuration>
         <property>
             <name>mapred.job.tracker</name>
             <value>localhost:9001</value>
         </property>
    </configuration>
    

      接下来需要安装SSH
    在ubnuntu下直接在控制台中输入

    sudo apt-get install openssh-server  
    

      如果提示找不到源,在软件中心输入

    sudo apt-get update
    

      安装完SSH,需要设置登录的密钥,控制台输入

    ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa   
    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys  
    ssh-keygen代表生成密钥;-t(注意区分大小写)表示指定生成的密钥类型,dsa是dsa密钥认证的意思,即密钥类型;-P用于提供密语;-f指定生成的密钥文件。cat  把id_dsa.pub(公钥)追加到授权的authorized_key里。这样控制台输入ssh localhost就不需要密码了。
    下面是运行步骤(路径是hadoop路径):
    (1)把NameNode格式化,并开启Hadoop进程
    bin/hadoop namenode -format  
      
    bin/start-all.sh
    输入jps,查看相关5个进程是否开启。
    (2)在HDFS上建立输入文件夹,并上传数据
    bin/hadoop fs -mkdir input  
    bin/hadoop fs -put data input 
    input是建立的文件夹的名字,date是本地数据文件(默认路径在hadoop目录下),至于命令bin/hadoop fs -help查看。
    (3)运行Wordcount,查看结果
    bin/hadoop jar hadoop-examples-*.jar wordcount input output  
    bin/hadoop fs -cat output/* >> result.txt  
    
    如果是自己导出的jar 包可以直接用bin/hadoop jar own.jar input output。结果放在result.txt文件中(本地Hadoop目录),不加它,在控制台查看结果。
    程序运行期间可以通过浏览器http://机器名:50030查看运行情况
    (4)关闭hadoop进程
    bin/stop-all.sh  

    (3)全分布式模式

    对于Hadoop,不同的系统有不同的节点划分方式。在HDFS看来。节点分为NameNode和DataNode,其中DataNode可以有多个;MapReduce看来,节点分JobTracker和TaskTracker,TaskTracker可以多个。
    全分布式的部署和伪分布式部署的差不多。
    有大于两台的机器,有相同的用户名(必须),确定IP在同一个网段,并能相互ping通。
    192.168.6.30 master  
    192.168.6.31 node1  
    

    (1)主机生成SSH,并分发密钥

    ssh-keygen -t rsa  
    ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@192.168.6.31
    

     如果分发不成功可以使用下面的命令

    scp ~/.ssh/id_rsa.pub MachineName@202.194.124.49:~/mas_key 
    

     然后在远程机器上

    mkdir ~/.ssh  
    chmod 700 ~/.ssh  
    mv ~/mas_key ~/.ssh/authorized_keys  
    chmod 600 ~/.ssh/authorized_keys  
    

     使用ssh-copy-id不仅可以将公钥添加到authorized_keys中去,而且也设置了正确的权限(文件夹.ssh为700,authorized_keys为600)
    参考文章:http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/
    ssh免密码登录原理可参考:http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
    这样在master主机上ssh 192.168.6.31主机时应该就不用输入密码了
    如果出现Agent admitted failure to sign using the key这个问题
    解決方式 使用 ssh-add 指令将私钥 加进来 

    ssh-add   ~/.ssh/id_rsa   
    

    (2)配置hosts文件

     

    sudo gedit /etc/hosts
    
    127.0.0.1    localhost  
    #127.0.0.1 机器名  
    192.168.6.38 master  
    192.168.6.31 node1  
    

    *第二行的注释一定要注释掉。然后将hosts文件通过scp 分发到从机上,登录从机移动hosts文件。

    scp /etc/hosts 目标机器名@目标机器IP:~/hosts  
    
    sudo mv hosts /etc/  
    (3)修改hadoop配置文件
    共5个文件需要配置,其中三个和伪分布式的一样,其中两个文件的字段需要改成主机的机器名(这里为master,也可以是IP),另两个文件是masters和slaves
    masters
    master 
    

    slaves

    master  
    node1 
    
    这个Hadoop集群中有两个数据节点,master兼当主从机。
    *5个配置文件也需要分发到从机上(即集群中主从机器的hadoop的配置相同)
    这样Hadoop的配置就完成了,用ssh node1命令,就可以直接登录了。
    接下来运行Wordcount的步骤和伪分布式模式一样了。
    注意:每次运行前把集群机器中logs目录清空。

      

  • 相关阅读:
    gedit保存出现The file has been changed since reading it!!! Do you really want to write to it (y/n)?y
    8051处理器与Quatus Signal TypeⅡ进行板级调试
    DesignWare I2C模块的验证
    Denali NAND FLASH控制器的验证
    openocd安装与调试
    SPI协议介绍
    CAN协议学习(二)MCAN控制器介绍
    CAN协议学习(一)协议介绍
    Remosaic技术学习
    ISP算法:深入聊聊lens shading
  • 原文地址:https://www.cnblogs.com/51zone/p/8011991.html
Copyright © 2011-2022 走看看