• Mac OS X Yosemite安装Hadoop 2.6记录


    整个安装过程分为四个部分:

    一.  安装Homebrew

    二.  ssh localhost

    三. 安装Hadoop已经进行配置文件设置 (伪分布式)

    四. 执行栗子


    一. 安装Homebrew

    採用Homebrew安装Hadoop很简洁方便。之前在Windows上Cygwin上安装过Hadoop,感觉好麻烦。

    关于Homebrew能够查看其官网 http://brew.sh/ 也能够查看Homebrew 新一代OS X套件管理工具 一文。

    $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

    然后将上面一行命令拷贝到终端运行就安装完毕了。


    二. ssh localhost

    由于安装hadoop须要远程登入的功能,所以须要安装ssh工具。

    Mac OS X仅仅需在“系统偏好设置”的“共享”的“远程登录”勾选就能够使用ssh了。

    ssh的很多其它能够查看  SSH原理与应用  一文。

    假设没有生成过ssh公钥,就使用命令: (查看 ~/.ssh/id_dsa 和~/.ssh/id_dsa.pub存不存在就知道之前有没有生成过公钥。或者直接运行ssh localhost看是否能成功)

    $ ssh-keygen -t rsa -P ""
    $ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

    后面的命令是为了将自己的公钥存到对方的公钥保存目录中, 这是为了避免每次运行ssh  localhost进行远程登入的时候都要输入password。

    三. 安装hadoop    由于就在自己的一台电脑。所以就採用伪分布式模式。

    <span style="font-size:18px;">$ brew install hadoop</span>

    hadoop 就成功安装了。当然这样安装的最新稳定版, 我安装时最新为2.6。

    hadoop将按预定的路径安装。

    以下就是配置文件的改动了:

    hadoop-env.sh

    文件在/usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop/hadoop-env.sh   

    将 

    export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"

    改动为

    export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc="
    编辑 Core-site.xml

    /usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop/core-site.xml

    <configuration>
      <property>
         <name>hadoop.tmp.dir</name>  
    <value>/usr/local/Cellar/hadoop/hdfs/tmp</value>
        <description>A base for other temporary directories.</description>
      </property>
      <property>
         <name>fs.default.name</name>                                     
         <value>hdfs://localhost:9000</value>                             
      </property>                                                        
    </configuration> 

    注: fs.default.name 保存了NameNode的位置。HDFS和MapReduce组件都须要用到它。这就是它出如今core-site.xml 文件里而不是 hdfs-site.xml文件里的原因


    编辑 mapred-site.xml   可能文件名称为 mapred-site.xml.templete , 改不改名字都能够。

     /usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop/mapred-site.xml 刚開始是空白的文件

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

    变量mapred.job.tracker 保存了JobTracker的位置,由于仅仅有MapReduce组件须要知道这个位置,所以它出如今mapred-site.xml文件里。

    编辑 hdfs-site.xml

    /usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop/hdfs-site.xml

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

    变量dfs.replication指定了每一个HDFS数据库的复制次数。 通常为3, 因为我们仅仅有一台主机和一个伪分布式模式的DataNode,将此值改动为1。

    至此,配置文件编辑完成。

    接下来是进到 hadoop 的安装文件夹 /usr/local/Cellar/hadoop/2.6.0/sbin

    然后运行 ./start-dfs.sh 和 ./start-yarn.sh 就能够启动 Hadoop了。

    只是这里会出现一个 警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 这对Hadoop的执行没有影响,关于这个警告后面再讲。

    为了启动Hadoop的时候避免每次都首先进到安装文件夹。然后再运行./start-dfs.sh 和 ./start-yarn.sh这么麻烦,所以在编辑 ~/.profiles文件,加上例如以下两行:

    alias hstart="/usr/local/Cellar/hadoop/2.6.0/sbin/start-dfs.sh;/usr/local/Cellar/hadoop/2.6.0/sbin/start-yarn.sh"
    alias hstop="/usr/local/Cellar/hadoop/2.6.0/sbin/stop-yarn.sh;/usr/local/Cellar/hadoop/2.6.0/sbin/stop-dfs.sh"
    然后运行 $ source ~/.profile 更新。 这样能够就能够用 hstart 和 hstop 这两个简单明了启动Hadoop了。

    只是在启动hadoop之前要先格式化 hdfs

    $ hadoop namenode -format
    这时就能够用hstart启动hadoop了。

    能够使用 jps 命令验证 Hadoop是否在执行。

    四. 执行栗子

    安装完了之后肯定想看看能不能使用。hadoop自带了一个样例。

    $ hadoop jar <path to the hadoop-examples file> pi 10 100

    $ hadoop jar /usr/local/Cellar/hadoop/2.3.0/libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.3.0.jar pi 2 5
    得到的结果可能是这种:

    Wrote input for Map #0
    Wrote input for Map #1
    Starting Job
    ...
    Job Finished in 1.685 seconds
    Estimated value of Pi is 3.60000000000000000000

    然后能够通过Web端进行监控。

    Resource Manager: http://localhost:50070
    JobTracker: http://localhost:8088
    Specific Node Information: http://localhost:8042
    通过他们能够訪问 HDFS filesystem, 也能够取得结果输出文件.


    注: 前文提到的 警告 是关于 Hadoop 本地库的, Hadoop本地库是为了提高效率或者某些不能用Java实现的功能组件库。眼下仅仅支持 *unix, 在Mac OS X和Cygwin上没有支持的。

    native hadoop library

    只是我看到一篇文章说也能够在Mac OS X支持本地库,其解决方法是 Mac OSX 下 Hadoop 提高利用当地图书馆的工作效率


  • 相关阅读:
    java.lang.NoClassDefFoundError异常处理
    CMS之promotion failed&concurrent mode failure
    jvm 内存,线程,gc分析
    spring 参数校验
    常用的正则表达式
    《深入理解java虚拟机-高效并发》读书笔记
    ConcurrentHashMap源码分析
    web前端性能调优(二)
    由自动装箱和拆箱引发我看Integer源码
    阅读《effective java-第17条》遇到的问题解决与分享
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4580779.html
Copyright © 2020-2023  润新知