关于Hadoop运行java的详解

  • Post author:
  • Post category:java


从 hadoop URL 读取数据


1. 自定义编写URLCat方法:

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;

import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;

public class URLCat{
        static {
                URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
        }

        public static void main(String[] args) throws Exception {
                InputStream in = null;
                try {
                        in = new URL(args[0]).openStream();
                        IOUtils.copyBytes(in, System.out, 4096, false);
                } finally {
                        IOUtils.closeStream(in);
                }
        }
}

代码说明:这里采用的方法是通过FsUrlStreamHandlerFactory实例调用java.net.URL的setURLStreamHandlerFactory方法。每个java虚拟机只能调用一次这个方法,因此通常在静态中调用。

准备工作:

1.开启集群,我用的是一个master,两个slave的分布式

2.我的用户是hdfs,因此在/home/hdfs目录下创建文件夹fileTest

3.进入到文件夹fileTest,创建两个txt文本,名字自定义

4.将文件中写入字符串,echo “Hello World”>file1.txt,echo “Hello hadoop”>file2.txt

5.在HDFS上创建输入文件夹,如果不指定路径则自动创建到根目录hadoop fs -mkdir -p input

6.上传本地文件到集群input目录下

hadoop fs -put ~/fileTest/file*.txt input

运行步骤:

1. 用HelloWorld测试环境运行(保证环境可用)

2. 将

export CLASSPATH=.:/var/local/hadoop/hadoop-2.6.0/share/hadoop/common/lib/*:/var/local/hadoop/hadoop-2.6.0/share/hadoop/common/hadoop-common-2.6.0.jar

添加到/etc/profile中,source /etc/profile 使其生效

common包负责java的编译运行,因此找到common包是主要目的

3. 运行命令:

hadoop jar jar文件名 类名 路径名

#编译java文件,生成class文件
javac   URLCat.java
jar  cvf  URLCat.jar  URLCat.class
hadoop jar 类名.jar 类名 hdfs://192.168.253.131:9000/文件路径



版权声明:本文为CSDN_FTD原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。