博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu 上 Hadoop 1.0.3 单节点 配置-运行 成功
阅读量:5298 次
发布时间:2019-06-14

本文共 5422 字,大约阅读时间需要 18 分钟。

由于项目的需要,需要对一个分布式文件系统进行深入的学习,在MooseFS(MFS)和Hadoop的HDFS进行了大概一周的文档阅读、比较和资料的查阅,还是决定了用Apache的Hadoop开源项目进行开发,功能更强大,面向对象语言的开发(Java)而且比较大的开源组织的支持,文档也比较齐全,虽然都是基于Google File System(GFS)的实现,但是HDFS还是保留了更多的GFS的特性。支持超大文件的存储,高容错性(比MFS)且提供高吞吐量的数据访问,对于项目的需求来说,已经足以。

经过1天的资料阅读、软件安装与配置,终于搞定了Linux Ubuntu下 Hadoop 1.0.3版本的单节点配置,而且配置工作量不是很大。网上的配置版本很多,而且没有针对1.X的配置说明(可能跟之前0.2.X的类似吧),参考资料有:《Hadoop 权威指南》、《Hadoop 开发者》第一期、Michael G. Noll的一篇文章和《Hadoop实践》。学习Hadoop的网站、网址可以参考:

  •  (Hadoop官方网站)
  •  (Hadoop中文论坛)
  •  (Hadoop中文文档)
  •  (Hadoop Java API)
  •  (Hadoop版本下载)
  •  (Michael G. Noll的文章)
  • (《Hadoop权威指南(原版)》) 
  •  (Hadoop Wiki)
  •  (Hadoop Presentations) 
  •  (Getting Started With Hadoop)

 

这里把自己的配置过程和配置文件分享下。

 

1. 安装Oracle VM VirtualBox虚拟机(虚拟机随意,物理机最好,虚拟机作为单节点跑起Hadoop还是比较慢的)并安装Ubuntu 11.10(Ubuntu版本也随意,不过建议版本不要太旧)。可以到我的网盘下载。 (Ubuntu 镜像文件)和  (VirtualBox)

2.安装Java JDK

我是用的是稳定的1.6版本,1.6.32。下载地址 。下载jdk-6u32-linux-i586.bin版本。Linux下安装bin文件命令:

(1)移动到自己安装JDK的路径,我的路径是:/usr/lib/jvm/jdk6下,没有的文件夹自己创建;

(2)chmod +x jdk-6u32-linux-i586.bin

(3)./jdk-6u32-linux-i586.bin

安装完成然后配置环境变量。  使用vim或者gedit来编辑/etc/profile文件。在文件末尾添加:

export JAVA_HOME=/usr/lib/jvm/jdk6/jdk1.6.0_32

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

至此JDK安装完成。终端使用java -version查看版本是否匹配。注意Ubuntu自带的openjdk是不能正常运行Hadoop的(自己没有尝试,很多文档这么说),所以还是建议安装下JDK

3. 安装SSH

终端下使用下面的命令:

ssh-keygen -t rsa -P "" (生成SSH key)

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (公布公钥。如果~下没有.ssh文件夹,首先手动先创建一个.ssh文件夹)

ssh localhost (测试是否成功)

(我的过程没问题,有的可能会遇到 connection refused错误。 查百度解决)

4. 禁用IPv6 (原因是Ubuntu上的IPv6可能会与0.0.0.0冲突,而0.0.0.0在Hadoop中又被广泛使用)

编辑/etc/sysctl.conf文件,在文件末尾添加:

#disable ipv6

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

net.ipv6.conf.lo.disable_ipv6 = 1

完成并保存,测试是否禁用成功。 终端使用 cat /proc/sys/net/ipv6/conf/all/disable_ipv6 命令,如果是0则没有禁用,1则表示禁用成功

(这个是在别人那里看到的,不配置没试过,可能对于基本的运行,不用这样禁用ipv6)

5. 安装Eclipse

下载并解压即可。下载地址

(对于正常运行Hadoop,Eclipse是不需要的。这个是用来看代码的)

6. 配置文件(hadoop-env.sh、core-site.xml、hdfs-site.xml和mapred-site.xml)

我使用的是 hadoop1.0.3版本,在之前提到的hadoop下载地址下载。解压hadoop压缩文件即可,我是解压到~/eric/下。下面便是配置这四个配置文件。切记你在Ubuntu下的用户有对需要使用的文件夹有读写权限,这是很重要的。最好不要在命令行中使用sudo,最好chmod来改变文件夹的权限。

(1)hadoop-env.sh

  • #export JAVA_HOME= ...

替换成自己的JAVA_HOME路径,切记要去掉“#”,我的路径是 export JAVA_HOME=/usr/lib/jvm/jdk6/jdk1.6.0_32

  • export HADOOP_PID_DIR=/home/eric/hadoop-pid

这个是为可能会遇到的守护进程启动不了问题所修改的,路径可以自己人为指定,而且在/etc/profile文件末尾添加 export HADOOP_PID_DIR=/home/eric/hadoop-pid。这个是我在解决no namenode to stop 和 no datanode to stop时解决问题所遇到的另一个问题,指定了这个路径,问题便解决了。

 (2)core-site.xml

  • 首先拷贝src/core文件夹下的core-default.xml文件到conf目录下,然后重命名成core-site.xml(默认在conf文件夹下的core-site.xml内容是空的),进行如下修改:
  • <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/eric/hadoop-datastore/hadoop-${user.name}</value>
      <description>A base for other temporary directories.</description>
    </property>

  <!-- 这个配置非常重要,在其他配置文件中是会用到这个路径的。 -->

  •  <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:9999</value>
      <description>description>
    </property>

  <!-- 这个配置非常重要,这是在之后的编程中要匹配的地址,确保端口号没被使用. -->

(3)hdfs-site.xml

  • 首先拷贝src/hdfs文件夹下的hdfs-default.xml文件到conf目录下,然后重命名成hdfs-site.xml(默认在conf文件夹下的hdfs-site.xml内容是空的),进行如下修改:
  •  <property>
      <name>dfs.replication</name>
      <value>1</value>
      <description></description>
    </property>

         <!-- 由于是在单节点上配置,所以副本为1.没有尝试不是1的结果,但是有的文档说是会因为找不到其他的datanode节点而出现错误。 -->

  •  <property>
      <name>dfs.data.dir</name>
      <value>${hadoop.tmp.dir}/dfs/data</value>
      <description></description>
    </property>
  •  <property>
      <name>dfs.name.dir</name>
      <value>${hadoop.tmp.dir}/dfs/name</value>
      <description></description>
    </property>

  <!-- 以上这两个配置项也是很重要的,默认的是使用了在core-site.xml中的hadoop.tmp.dir路径下的。保持这样就行,在之后的format的时候,会显示这个dfs.name.dir的。 -->

(4)mapred-site.xml

  <property>

    <name>mapred.job.tracker</name>
    <value>localhost:9998</value>
    <description></description>
  </property>

  <! -- 配置job tracker -->

7.编写Test文件用来在HDFS上存储文件并检查是否成功

import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataOutputStream;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;public class Test {	public static void main(String[] args) {		Configuration conf = new Configuration();		try {			FileSystem fs = FileSystem.get(conf);			Path f = new Path("hdfs://localhost:9999/test.txt");			FSDataOutputStream out = fs.create(f);			for(int i=0;i<100;i++){				out.writeChars("test" + i + "\n");			}			out.close();		} catch (IOException e) {			e.printStackTrace();		}	}}

  打包成test.jar并拷贝到hadoop/bin目录下,终端进入~/eric/hadoop/bin目录。

  • hadoop namenode -format (#格式化)
  • start-all.sh (#启动)
  • ./hadoop fs -ls /
  • .hadoop jar ./test.jar Test
  • ./hadoop fs -ls /
  • ./hadoop fs -cat /test.txt
  • stop-all.sh (#结束)

下面的截图可以供参考:

format success

 start-all success

write success

 

 write success

 stop success

 

对于学习hadoop希望有帮助~ ^_^

 

 

 

补充:

1. 启动脚本

在Hadoop Wiki中看到如下对启动脚本的介绍,不清楚具体针对的版本是怎样,个人觉得可能是0.2.X之后的,这样也好,把HDFS和MapRed分开了。

  • start-dfs.sh - Starts the Hadoop DFS daemons, the namenode and datanodes. Use this before start-mapred.sh

  • stop-dfs.sh - Stops the Hadoop DFS daemons.

  • start-mapred.sh - Starts the Hadoop Map/Reduce daemons, the jobtracker and tasktrackers.

  • stop-mapred.sh - Stops the Hadoop Map/Reduce daemons.

  • start-all.sh - Starts all Hadoop daemons, the namenode, datanodes, the jobtracker and tasktrackers. Deprecated; use start-dfs.sh then start-mapred.sh

  • stop-all.sh - Stops all Hadoop daemons. Deprecated; use stop-mapred.sh then stop-dfs.sh

转载于:https://www.cnblogs.com/hanyuanbo/archive/2012/06/12/2546111.html

你可能感兴趣的文章
路由跟踪工具0trace
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
boost库使用:vs2013下boost::container::vector编译出错解决
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
快来熟练使用 Mac 编程
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
plsql使用,为什么可以能看见其他用户的表
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
使用pager进行分页
查看>>
UVA - 1592 Database
查看>>
Fine Uploader文件上传组件
查看>>
javascript中的传递参数
查看>>
objective-c overview(二)
查看>>
python查询mangodb
查看>>
consonant combination
查看>>
驱动的本质
查看>>
Swift的高级分享 - Swift中的逻辑控制器
查看>>
Swagger简单介绍
查看>>
sql语句中where与having的区别
查看>>