ubuntu伪分布hadoop
hadoop1.2.1伪分布模式安装教程
机器配置:
ip地址:
一、 软件环境准备
1.1 Java
Java在这里使用的是jdk1.7版本的,当然也可以使用1.6的,下载链接:
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
我的Linux机器是64位的。如果Linux机器是32的就必须选择32位的下载,不同的机器必须要配置不同的jdk版本。
1.2Hadoop
我们使用hadoop Release 1.2.1(stable)版本,下载链接:
http://mirrors.ustc.edu.cn/apache/hadoop/common/hadoop-1.2.1/
选择hadoop-1.2.1-bin.tar.gz文件下载
二、 相应环境配置
2.1 安装并配置ssh环境:(配置ssh无密钥连接)
使用以下命令设置ssh无密码连接:
$sudo spt-get install openssh-server
$ssh-keygen -t dsa -P "" -f ~/.ssh/id_dsa
$cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
测试ssh配置是否成功:
$ssh localhost
2.2 配置java环境
Ø 解压文件
$sudo mv jdk-7u80-linux-x64.tar.gz /usr/lib/jvm
$ tar –zvxf jdk-7u80-linux-x64.tar.gz
Ø 配置java环境变量
1.在/etc/profile.d/目录下创建一个.sh结尾的文件(如java.sh),文件内容如下:
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
2.执行
$sudo source /etc/profile
三、 配置Hadoop
Hadoop环境的配置必要条件:(见相应环境配置)
Ø java运行环境
Ø ssh的无密钥连接
hadoop配置文件配置:
把文件解压,并进入配置文件所在的目录
hadoop@ubuntu:~$ tar -zvxf hadoop-1.2.1.tar.gz
hadoop@ubuntu:~$ cd hadoop-1.2.1/conf/
我们可以看到haddoop- env.sh,core-site.xml,mapred-site.xml,hdfs-site.xml这四个文件以及需要在完全分布模式配置的 slaves和masters文件。
3.1配置hadoop-env.sh:
首先我们用vi hadoop-env.sh命令编辑打开hadoop-env.sh文件,找到JAVA_HOME关键字所在的行,把前面的#号去掉,然后填写实际的JAVA_HOME地址:
3.2配置core-site.xml:
vi core-site.xml打开core-site.xml文件,修改后内容如下:
<!—fs.default.name:用来配置namenode,指定HDFS文件系统的URL,通过该URL我们可以访问文件系统的内 容,也可以把localhost换成本机IP地址;如果是完全分布模式,则必须把localhost改为实际namenode机器的IP地址;如果不写端 口,则使用默认端口8020。 -->
<!-- hadoop.tmp.dir:Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此 文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。该目录必须预先手工创建。 -->
3.3配置hdfs-site.xml:
在configuration标签中加入以下内容,所有不存在的目录都要预先创建
3.4配置mapred-site.xml:
<!—该项配置用来配置jobtracker节点,localhost也可以换成本机的IP地址;真实分布模式下注意更改成实际jobtracker机器的IP地址-->
四、 启动hadoop
4.1:测试hadoop配置是否成功:
4.2:格式化namenode:
$cd /data/software/hadoop/hadoop-1.2.1/bin
$./hadoop namenode –format
4.3:启动hadoop进程,运行start-all.sh:
$./start-all.sh
我们可以通过java的jps命令来查看进程是否启动成功,从下图可以看到,我们已经成功启动 SecondaryNamenode,JobTracker,NameNode,DataNode,TraskTracker五个进程,而刚好这五个进程 是hadoop所需要的。如果有一个进程没有启动成功,就表示整个集群没有正常工作,我们可以进入/data/software/hadoop /hadoop-1.2.1/libexec/../logs/目录下查看失败日记。
4.4:从浏览器查看hadoop信息:
我们可以从本机或者其他机器的浏览器访问hadoop。
查看jobtracker信息:
http://192.168.56.101:50030/jobtracker.jsp
查看namenode信息:
http://192.168.56.101:50070/dfshealth.jsp
查看trasktracker信息:
http://192.168.56.101:50060/tasktracker.jsp
五、 hadoop实例
在这里我们来测试下hadoop自带的examples例子,该例子里面有个wordcount类,wordcount用来计算文件里面每一个单词 出现了多少次数。examples jar包位于hadoop安装目录下,名称叫做hadoop-examples-1.2.1.jar。
5.1进入到bin目录中去,在当前目录下创建input文件夹,并创建文件f1.txt f2.txt f3.txt
5.2在hadoop中创建文件夹
使用以下命令在hadoop中创建文件夹:
./hadoop dfs –mkdir input
然后我们查看在hadoop中是否已经创建该文件夹:
./hadoop dfs -put input/* input
./hadoop dfs -ls /user/hadoop/input
我们可以看到已经成功在hadoop中创建了input文件夹,并把文件复制到input文件夹中。
./hadoop dfs –cat input/*.txt
可以看到,文件已经成功放入hadoop文件系统中了。
5.3:运行examples例子
我们使用以下命令来运行wordcount程序:
./hadoop jar ../hadoop-examples-1.2.1.jar wordcount input output
注意当前目录是bin目录,而jar包在上一级目录中,则定位jar包需要用到..来表示上级目录,wordcount表示jar包中的类名,表示要执行这个类,input是输入文件夹,output是输出文件夹,必须不存在,它由程序自动创建,如果预先存在output文件夹,则会报错。 我们可以看到程序已经运行成功,接下来就是查看运行结果了。
5.4查看运行结果
我们可以查看output文件夹的内容来检查程序是否成功创建文件夹,通过查看output文件里面的part-r-00000文件的内容来检查程序执行结果:
我们可以看到hadoop出现一次,hello出现3次,java出现一次,world出现一次,这跟预期是一样的,说明执行成功。
六、 关闭hadoop进程
如果我们要关闭hadoop集群,则只需要运行stop-all.sh:
./stop-all.sh
可以看到只有一个jps进程在运行,其它hadoop的进程都已经关闭了。
注记:
方便起见,修改~/.bashrc把当前目录加入到path变量中(在最后添加一行)
$source ~/.bashrc使配置生效