Ubuntu上安装Hadoop伪分布

JDK版本:jdk-6u45-linux-x64.binhtml

(下载网址:http://www.oracle.com/technetwork/java/javase/downloads/index.html,请到Previous Releases里面找)java

Hadoop版本:hadoop-0.20.203.0rc1.tar.gznode

(网上大多数教程都是这个版本的,其实新版的已经出了好久了,可是新版的教程不多,学习阻力太大,因此暂时仍是用这个版本吧)linux

       用到的全部文件都存放在/home/kevin 目录下(个人用户组的名字是kevin,也就是存放在Documents文件夹所在的目录),要否则后面会遇到不少权限的问题,并且,最好不要用root用户登陆,虽然网上不少教程都说转到root用户下,这样作很差。算法

一、安装Hadoop的运行环境——JDK浏览器

     其实安装JDK很简单。下载好JDK,修改权限:oracle

sudo chmod u+x jdk-6u45-linux-x64.bin

     而后执行以下解压语句:ssh

sudo ./jdk-6u45-linux-x64.bin

     一长串解压过程飞速闪过以后,JDK就解压完了。jvm

     可是也有像我同样没怎么学过linux的新手,执行这条命令时不成功。观察他们的命令,发现他们没有进到jdk所在的文件夹,而直接在“/”后面输入了jdk所在的绝对路径。只是不能成功的,应该进入到jdk所在的文件夹,或者将jdk拷贝到当前路径。oop

     如今,配置环境变量。打开profile文件:

sudo gedit /etc/profile

     将下面几行添加到文件末尾:

export JAVA_HOME=/home/kevin/jdk
export HADOOP_HOME=/home/kevin/hadoop
export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH

     最后,文件以下:

     其中,hadoop的地址也一次性加到了其中。最后,保存退出。

     执行以下命令,更新环境变量(这一步也能够放在Hadoop安装完成后执行):

 source /etc/profile

     如今输入以下命令能够验证Java是否安装成功:

java -version

     若是显示以下,则表示安装成功:

     如今,Java安装完成~~~~~

二、配置SSH无密码登陆:

     首先,更新一下系统(其实没必要要,主要是由于有可能安装openssh-server不成功,因此,仍是先更新一下吧)

sudo apt-get update

     一长串更新进程结束后,开始安装SSH。

    执行以下命令安装openssh-server:

sudo apt-get install openssh-server

    跑完后就安装成功。

    接下来,配置无密码登陆:

ssh-keygen -t rsa -P ""

    出现以下提示:

    这是让你输入公钥和私钥的存放路径,括号里的表示默认路径,这里直接回车,选用默认路径。

    而后显示以下:

    这将生成一个隐藏文件 .ssh,进入这个文件夹,而后将公钥追加到authorized_keys文件中,此文件最初并不存在,但执行追加命令后将自动生成:

cd .ssh
cat id_rsa.pub >> authorized_keys

    如图:

    最后,验证是否安装成功。用可否登陆本机来验证,命令以下:

ssh localhost

    显示以下:

    输入yes(不用在乎其中的“can't be established”提示),回车,显示以下:

    而后执行退出命令:

exit

    如图:

    如今,无密码登陆配置成功~~~~

三、终于开始安装Hadoop了

    下载好Hadoop,而后修改权限:

sudo chmod 777 hadoop-0.20.203.0rc1.tar.gz

    而后解压:

sudo tar zxvf hadoop-0.20.203.0rc1.tar.gz

    修改解压出来的文件夹的权限(能够看到,解压出来的文件夹上有个灰颜色的锁,至少我这儿是这样)

sudo chmod 777 -R hadoop-0.20.203

    也能够将文件夹的名字改得短一点,后文中笔者就用改后的名字:

mv hadoop-0.20.203 hadoop

    解压工做完成,如今开始配置:

    进入hadoop/conf文件夹中

cd hadoop/conf

    打开hadoop-env.sh文件,找到exportJAVA_HOME这句话,去掉注释标记,等号后面改为你的JDK路径,保存退出

    如图:

    红框位置,图为去掉#号后的截图

    接下来将配置三个文件core-site.xmlhdfs-site.xmlmapred-site.xml,其中,加入的内容都在<configuration>与</configuration>之间添加,后面不在一一赘述

    配置hdfs-site.xml文件:

    加入以下内容:

<property>
    <name>dfs.replication</name>
    <value>1</value>
</property> 
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>
<property>
    //用于存放主节点的信息,好比fsimage文件(这个文件至关重要,没有他没法读取HDFS的内容),通常设置多个地址,
    //只需在<value>与</value>之间以逗号分隔每一个地址
    <name>dfs.name.dir</name>
    <value>/home/kevin/hadoop/namedata</value>    
</property>
<property>
    //设置从节点数据的存放位置,也能够设置多个
    <name>dfs.data.dir</name>
    <value>/home/kevin/hadoop/data</value>    
</property>

    保存退出。

    配置core-site.xml文件:

    加入以下内容(此文件千万别复制哦~~~~~):

<property>
    <name>fs.default.name</name>
    <value>hdfs://kevin:9000</value> //将kevin改为各位@后面的名字
</property> 
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/kevin/hadoop/tmp</value>
</property>

    保存退出

    配置mapred-site.xml文件:

    以下(别复制哦~~~):

<property>
    <name>mapred.job.tracker</name>
    <value>kevin:9001</value>//将“kevin”改为各位的用户组(@后面那个)的名字
</property>
//一下的内容能够暂时不用设置,但从经验来看,仍是设置一下为好
<property>
    //一个节点上最大能运行的Map数量(默认是两个,但从经验来看,数据量大而机器又旧,两个是带不起来的)
    <name>mapred.tasktracker.map.tasks.maximum</name>
    <value>1</value>
</property>
<property>
    //每一个节点最大能运行的reduce数量,默认是1个,这里写出来是为了让你们知道在哪里改这个数据
    <name>mapred.tasktracker.reduce.tasks.maximum</name>
    <value>1</value>
</property>
<property>
    //我相信你们必定会遇到“java heap space”的问题,除非各位是算法高手,而且机器内存很大
    //这个用于设置程序运行时(jvm虚拟机)的内存容量
    <name>mapred.child.java.opts</name>
    <value>-Xmx4096m</value>
</property>

    全部配置都已完成,如今格式化:

    执行以下命令:

hadoop namenode -format

    出现以下画面:

    各位不用去一行一行对照看是否是同样,接下来的操做同样能够验证。

    有的人在执行这句命令时可能出现hadoop : command not found。这是由于环境变量中没有该命令,而这就很可能是没有刷新/etc/profile文件,再执行一次jdk安装时的source命令便可。或者,也能够执行以下命令,不过前提是进入到hadoop文件夹:

sudo bin/hadoop namenode -format

    但仍是建议你们source一下profile文件,要否则之后都只有进入到bin文件夹中才能hadoop上的操做

    启动hadoop:

start-all.sh

    出现以下过程:

    表示启动成功~~

    输入jps看有几个java进程(成功的话应该有以下五个,不算Jps进程):

    安装成功~~~~~

    此处有可能没法启动DataNode,笔者遇到的主要缘由是屡次格式化,而之前的tmp和logs文件夹没有删除所致。删除这两个文件夹,而后新建便可(别忘了该权限哦)

    能够打开浏览器看看。在浏览器地址栏中输入kevin:50070和kevin:50030

    上面的是50070的,下面的是50030的。

    配置成功了~~~~~~~

    如今,来跑一个入门的程序wordcount吧:

    在Hadoop的HDFS文件系统上创建一个input文件夹,做为输入源,命令以下:

hadoop fs -mkdir input

    将一个测试文件上传到input文件夹中,测试文件的内容就是“hello world,hello hadoop"。执行以下命令:

hadoop fs -put /home/kevin/Desktop/hello.txt input

    而后执行Hadoop自带的测试程序wordcount,命令以下:

hadoop jar hadoop-examples-0.20.203.0.jar wordcount input output

    而后等待它跑完吧:

    看看结果是否正确。显示结果的内容,命令以下:

hadoop fs -cat output/part-r-00000

    OK~~~Hadoop安装成功,也能跑了~~~~~

 

    推荐两个网站供你们学习,找了这么多网站,发现这两个讲得最好:

    http://www.cnblogs.com/xia520pi/archive/2012/04/08/2437875.html

    http://blog.csdn.net/zhaoyl03/article/details/8657104

相关文章
相关标签/搜索