|
http://andy-ghg.iyunv.com/blog/1165453
参照例子装了1.0.4,不过略微有些不同
1:在core-site上加上了namenode指定
<property>
<name>hadoop.tmp.dir</name>
<value>/Users/apple/tmp/hadoop/hadoop-${user.name}</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:8020</value>
</property>
这样好像就避免了bin/hadoop namenode -format 要输入Y了,而且安装的目录也是自己可选可控制的
hadoop-env.sh加上了如下配置
export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
export HADOOP_HEAPSIZE=2000
export HADOOP_INSTALL=/Users/apple/hadoop-1.0.4
export HADOOP_OPTS="-Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk"
OPTS好像能够解决一个什么bug,具体忘记了。
另外还有就是1.0.4的插件了,这个插件比较难找啊,找了好多试了都没法使用,自己在本地打了一个出来,测试可以使用,附件放在dropins下;
最后就是测试程序了
package hadoop;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
public class MyTest {
public static void main(String[] args) throws Exception {
String uri = "hdfs://localhost:8020/Users/apple/tmp/hadoop/Zookeeper.doc";
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(uri), conf);
FSDataInputStream in = null;
try {
in = fs.open(new Path(uri));
System.out.println("the first print:");
IOUtils.copyBytes(in, System.out, 4096, false);
in.seek(0);// 可以重新定位文件的pos,因为是读取,但是如果写DFS上的文件的时候只能读取pos,不能更改Pos,因为hadoop只运行顺序的追加数据。
System.out.println("the second print:");
IOUtils.copyBytes(in, System.out, 4096, false);
} finally {
IOUtils.closeStream(in);
}
}
}
在Hadoop1.0.4,Myeclipse8.6下测试通过。
第一次写博客,写的很粗糙,不过ThoughtWorks的一篇微博说道:如果你想提升技术,多写博客,即能提高你思考的深度,也能锻炼你的表达能力。感觉说的比较对
|
|
|