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.xml,hdfs-site.xml,mapred-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