使用 Maven 搭建 hadoop 开发环境
使用 Maven 搭建 hadoop 开发环境
ok绷forever 发表于8个月前
使用 Maven 搭建 hadoop 开发环境
  • 发表于 8个月前
  • 阅读 12
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

  1. 在 pom.xml 文件里添加hadoop的依赖包 hadoop-common, hadoop-client, hadoop-hdfs ,内容如下:
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"  
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
    <modelVersion>4.0.0</modelVersion>  
    <groupId>my.hadoopstudy</groupId>  
    <artifactId>hadoopstudy</artifactId>  
    <packaging>jar</packaging>  
    <version>1.0-SNAPSHOT</version>  
    <name>hadoopstudy</name>  
    <url>http://maven.apache.org</url>  
   
    <dependencies>  
        <dependency>  
            <groupId>org.apache.hadoop</groupId>  
            <artifactId>hadoop-common</artifactId>  
            <version>2.5.1</version>  
        </dependency>  
        <dependency>  
            <groupId>org.apache.hadoop</groupId>  
            <artifactId>hadoop-hdfs</artifactId>  
            <version>2.5.1</version>  
        </dependency>  
        <dependency>  
            <groupId>org.apache.hadoop</groupId>  
            <artifactId>hadoop-client</artifactId>  
            <version>2.5.1</version>  
        </dependency>    
    </dependencies>  
</project>  

问题一: 在运行的过程中,原项目采用 log4j2 ,而 本hadoop-2.5.1 采用的是log4j ,更改 pom.xml 将log4j 冲突依赖排除

		<!-- hadoop 20170601 -->
		<dependency>
	<groupId>org.apache.hadoop</groupId>
	<artifactId>hadoop-common</artifactId>
	<version>2.5.1</version>
	<exclusions>
		<exclusion>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
		</exclusion>
		<!-- <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> 
			</exclusion> -->
	</exclusions>

</dependency>
	<dependency>
		<groupId>org.apache.hadoop</groupId>
		<artifactId>hadoop-hdfs</artifactId>
		<version>2.5.1</version>
		<exclusions>
			<exclusion>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-log4j12</artifactId>
			</exclusion>

			<!-- <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> 
				</exclusion> -->
		</exclusions>

	</dependency>
	<dependency>
		<groupId>org.apache.hadoop</groupId>
		<artifactId>hadoop-client</artifactId>
		<version>2.5.1</version>
		<exclusions>
			<exclusion>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-log4j12</artifactId>
			</exclusion>
			<!-- <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> 
				</exclusion> -->
		</exclusions>

	</dependency>
	<!-- end -->

问题二:

因为本项目是在windows 10 环境下去开发 CentOS6.5 环境下的hadoop 会出现错误:

Could not locate executable null\bin\winutils.exe in the Hadoop binaries

原因是没有配置hadoop 的环境变量: 添加

HADOOP_HOME=E:/hadoop/hadoop

在 path 中添加

E:/hadoop/hadoop/bin

同时下载 hadoop.dll 和 winutils.exe 放到 bin 文件夹下

读取 hadoop 下的内容

package my.hadoopstudy.dfs;  
   
import org.apache.hadoop.conf.Configuration;  
import org.apache.hadoop.fs.FSDataOutputStream;  
import org.apache.hadoop.fs.FileStatus;  
import org.apache.hadoop.fs.FileSystem;  
import org.apache.hadoop.fs.Path;  
import org.apache.hadoop.io.IOUtils;  
   
import java.io.InputStream;  
import java.net.URI;  
   
public class Test {  
    public static void main(String[] args) throws Exception {  
        String uri = "hdfs://9.111.254.189:9000/";  
        Configuration config = new Configuration();  
        FileSystem fs = FileSystem.get(URI.create(uri), config);  
   
        // 列出hdfs上/user/fkong/目录下的所有文件和目录  
        FileStatus[] statuses = fs.listStatus(new Path("/user/fkong"));  
        for (FileStatus status : statuses) {  
            System.out.println(status);  
        }  
   
        // 在hdfs的/user/fkong目录下创建一个文件,并写入一行文本  
        FSDataOutputStream os = fs.create(new Path("/user/fkong/test.log"));  
        os.write("Hello World!".getBytes());  
        os.flush();  
        os.close();  
   
        // 显示在hdfs的/user/fkong下指定文件的内容  
        InputStream is = fs.open(new Path("/user/fkong/test.log"));  
        IOUtils.copyBytes(is, System.out, 1024, true);  
    }  
}  
共有 人打赏支持
粉丝 3
博文 114
码字总数 53609
×
ok绷forever
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: