Linux Mint 搭建Hadoop 2.3.0 单机伪分布模式开发环境

最近在大量写MR程序进行数据抽取,但是总是在用公司的服务器实验自己的小程序好像有点不太好,加上最近在HK用325HKD购进了一套台式电脑,所以尝试用它搭建一个开发环境作为自己学习以及测试使用。机器是老机器,32bit,只是拿来玩玩,本来只想买个monitor,75HKD,但是在测试monitor的时候发现,这个老台式竟然带独显,考虑到最近也想搞GPU编程,所以顺带买下来了,一套325HKD算是值得了。回到正题,linux 版本是32bit linux mint 16, Hadoop 版本是 2.3.0, yarn 2.0。

-----------------------------------------------

Linux mint 的安装忽略,可以VM一个,也可以装进hard disk,自行搞定。

-----------------------------------------------

  添加 hadoop 用户组和用户

考虑到大部分公司里的hadoop集群都是专门把hadoop相关的应用分给特定用户组操作的,而且我这台实验机还需要跑R,以及CUDA之类的应用的,所以还是专门分一个hadoop用户组,当然,为了简化,用户名也设置为hadoop:

  • 首先是创建 hadoop 用户组,Terminal 中输入
     sudo addgroup hadoop
  • 创建 hadoop 用户, Terminal 中输入:
     sudo adduser -ingroup hadoop hadoop 

    创建过程中会要求给 hadoop 用户创建密码,建议还是创建一个,其余信息可以智杰回车使用 default,后面会设置 ssh 用 rsa 登录,启动 hadoop 时无需密码,要嫌密码麻烦可以设置默认登录 hadoop 用户。

  • 给 hadoop 用户添加权限,为了简便可以直接在 /etc/sudoer 中添加,也可以设置得复杂点,麻烦点会带来更高的安全度,但是对于我来说,实验机器就能懒就懒吧,Terminal 中打开:
     sudo vim /etc/sudoers 

    在"root ALL=(ALL:ALL)" 这行下面加上:

     hadoop ALL=(ALL:ALL) ALL 

    要是vim使用不习惯可以使用gedit,相对简单,加上上面的代码保存就可以了:

     sudo gedit /etc/sudoers 

    设置完成后注销,切换到 hadoop 用户安装 ssh 以及安装 hadoop

-----------------------------------------------

安装SSH

  • hadoop 使用 ssh 进行通信,安装ssh,Terminal:
     sudo apt-get install openssh-server 
  • 启动 ssh service
     service ssh start 
  • 查看 service 运行情况:
     ps -e | grep ssh 

    正常会出现两行代码: (****表示进程数字,略去)

     **** ?      00:00:00 sshd
    
    **** ?    00:00:00 ssh-agent
  • ssh 是一个安全通信协议,使用的时候要求输入密码,但是我们可以通过生成私钥和公钥对来进行无密码登录:
     ssh-keygen -t rsa -P ""

    直接回车跳过提示输入密码,否则以后登录就需要输入密码了。ssh-keygen 会在~/.ssh 目录下生成 id_rsa 和 id_rsa.pub 密码钥匙对,其中id_rsa是私钥,id_rsa.pub是公钥,我们需要把公钥添加到 authorized_keys 中(authorized_keys用于保存所有允许以当前用户身份登录到ssh用户的公钥内容):

     cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
  • 无密码登录测试(只要ssh service 开了就可以登录)
     ssh localhost 
  • 没有什么事就不要去更改id_rsa,id_rsa.pub以及authorized_keys, 但是如果哪天乱动了, 比如误删了~/.ssh,并且登录localhost 的时候需要登录密码了,可以重新生成 ssh-keygen 并添加authorized_keys 以后再使用ssh-add
    ssh-add ~/.ssh/id_rsa 

-----------------------------------------------

安装 JAVA JDK

由于 hadoop 是使用基于 java 的, 所以需要安装 java develop kit , 可以去这里下载. 记住要下载适合自己机器的包,我这里下载了 32-bit 的, 因为我的机器是32-bit 的。

  • 具体安装忽略,下面开始配置 JDK 环境变量,Terminal (优先使用 gedit 吧,vim 用户自便) :
     sudo gedit /etc/profile 

    在文件底添加以下代码(我的java安路径是 /home/don/java/jdk1.7.0_55,记得改成自己的路径噢):

     #set JAVA_HOME
    export JAVA_HOME=/home/don/java/jdk1.7.0_55
    export PATH=$PATH:$JAVA_HOME/bin
  • 以上也要添加到~/.bashrc中
     gedit ~/.bashrc 
  • 添加完后需要 source 一次才能正常运行:
     source /etc/profile 
  • 由于Linux Mint 是基于 Ubuntu 到发行版本,所以默认安装并且使用OPENJDK, 需要修改系统默认JDK (有些不准确,因为安装了有一段时间,大家可以自行 google 下 update-alternatives):
     sudo update-alternatives -- install /usr/bin/java java  /home/don/java/jdk1.7.0_55/bin/java 1888 

    可以使用下面代码进行切换:

     update-alternatives --config java 
  • 搞定以后可以用使用以下代码检验
     java -version
    java version "1.7.0_55"
    Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
    Java HotSpot(TM) Server VM (build 24.55-b03, mixed mode)

-----------------------------------------------

hadoop安装

目前hadoop最新的版本已经到了2.4.0的版本了,但是因为最近 Spark 框架相当牛掰,所以一些大厂商如Cloudra都说未来会减少hadoop的研发,转向开发Spark。Spark 需要使用Scala,functional programming中比较流行的语言,但是要注意的是functional programming对recursive programming 的功力还是有一定要求,我目前还没有时间去折腾这个,我需要先精通JAVA 以及Hadoop。虽然大家都说Spark会取代hadoop,但是hadoop作为一个日志系统是非常好的,估计没有那么容易被干掉的。回到正题,这篇教程使用的2.3.0,2.x.0系列的安装方法差不多,但是跟1.x.0系列的不一样。要是机器是64-Bit 的需要自己下载源码编译噢。

  • 到hadoop官网上下载压缩包并解压缩到 /home/hadoop/hadoop-2.3.0,

-----------------------------------------------

配置单机伪分布模式

伪分布模式需要配置core-site.xml, hdfs-site.xml, yarn-site.xml, 三个文件都在hadoop文件夹下的/etc/hadoop里面。

  • 配置core-site.xml
     cd hadoop-2.3.0 gedit /etc/hadoop/core-site.xml 
  • 修改代码如下
                           <configuration>
                             <property>
                               <name>fs.defaultFS</name>
                               <value>hdfs://localhost:8020</value>
                               <description>The name of the defaultfile system.
                               </description>
                             </property>
                           </configuration>
    
  • 配置hdfs-site.xml
     gedit /etc/hadoop/hdfs-site.xml

    代码如下:

    <configuration>
      <property>
       <name>dfs.namenode.name.dir </name>
       <value>/home/hadoop/hadoop-2.3.0/dfs/name</value>
      </property>
      <property>
       <name>dfs.datanode.data.dir</name>
        <value>/home/hadoop/hadoop-2.3.0/dfs/data</value>
      </property>
    </configuration>
    
  • 配置yarn-site.xml
    hadoop 2.x.系列引入了yarn,所以一些mapred的配置转向了yarn-site.xml

     gedit /etc/hadoop/yarn-site.xml

    代码修改如下:

    <configuration>
    <!-- Site specific YARN configuration properties -->
     <property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
     </property>
     <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
     </property>
    </configuration>
    
  • 配置日志输出,为调试错误提供方便
    export HADOOP_ROOT_LOGGER=INFO, console
  • 格式化文件系统
    cd hadoop-2.3.0
    mkdir dfs/
    mkdir dfs/name
    mkdir dfs/data
    ./bin/hadoop namenode -format
    
  • 启动服务
     ./sbin/hadoop-daemon.sh start namenode
     ./sbin/hadoop-daemon.sh start datanode
     ./sbin/hadoop-daemon.sh start dfs
     ./sbin/start-yarn.sh
    

    要是想犯懒,可以用一个已经被列为deprecated的方法

     ./sbin/start-all.sh
    
  • WordCount测试
    将下面的文件保存为file.txt

    hello world
    hello ray
    hello hadoop
    hadoop ok
    hadoop fail
    hadoop 2.3
    

    把file.txt加入到hadoop里:

    ./bin/hadoop fs -mkdir /data
    ./bin/hadoop fs -put file.txt /data
    

    运行hadoop自带的example

    ./bin/hadoop jar ./share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.3.0-sources.jar org.apeche.hadoop.examples.WordCount /data /outpout
    

    结果在hadoop系统中的/output/part-r-00000里面:

    2.3 1
    fail 1
    hadoop 4
    hello 3
    ray 1
    ok 1
    world 1
    

----------------------------------------------
参考资料:
http://raysworld.is-programmer.com/posts/43868.html
http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>