欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hadoop学习笔记(二)Hadoop 分布式文件系统 HDFS:1.HDFS基础

程序员文章站 2024-03-22 13:38:34
...

  • HDFS客户端操作(开发重点)

    • 1. HDFS客户端环境准备

      • 1.1、请参考文章:
        Windows10下搭建eclipse开发hadoop的开发环境
        其中的第一至四步骤。
      • 1.2、请参考文章:
        maven的安装、路径配置、修改库文件路径和eclipse中的配置,解决Eclipse使用Maven下载慢的问题
      • 1.3、创建一个maven工程HDFS
      • 1.4、 导入相应的依赖坐标加日志添加
        <dependencies>
        
        	<dependency>
        		<groupId>junit</groupId>
        		<artifactId>junit</artifactId>
        		<version>RELEASE</version>
        	</dependency>
        	<dependency>
        		<groupId>org.apache.logging.log4j</groupId>
        		<artifactId>log4j-core</artifactId>
        		<version>2.8.2</version>
        	</dependency>
        	<dependency>
        		<groupId>org.apache.hadoop</groupId>
        		<artifactId>hadoop-common</artifactId>
        		<version>2.7.2</version>
        	</dependency>
        	<dependency>
        		<groupId>org.apache.hadoop</groupId>
        		<artifactId>hadoop-client</artifactId>
        		<version>2.7.2</version>
        	</dependency>
        	<dependency>
        		<groupId>org.apache.hadoop</groupId>
        		<artifactId>hadoop-hdfs</artifactId>
        		<version>2.7.2</version>
        	</dependency>
        	<dependency>
        		<groupId>jdk.tools</groupId>
        		<artifactId>jdk.tools</artifactId>
        		<version>1.8</version>
        		<scope>system</scope>
        		<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
        	</dependency>
        
        </dependencies>
        
        添加完依赖后可能会有人的dependencies报jdk错误,原因在于JAVA_HOME配置里面有空格(这是不允许的)
        注意:如果Eclipse/Idea打印不出日志,在控制台上只显示
        1.log4j:WARN No appender scould be found for logger (org.apache.hadoop.util.Shell).
        2.log4j:WARN Please initialize the log4j system properly.
        3.log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#
        noconfig for more info.
        
        需要在项目的src/main/resources目录下,新建一个文件,命名为“log4j.properties”,在文件中填入
        log4j.rootLogger=INFO, stdout
        log4j.appender.stdout=org.apache.log4j.ConsoleAppender
        log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
        log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
        log4j.appender.logfile=org.apache.log4j.FileAppender
        log4j.appender.logfile.File=target/spring.log
        log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
        log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
        
      • 1.5、创建包名:com.ali.hdfs
      • 1.6、 创建HdfsClient类
        public class HDFSClient {
        	public static void main(String[] args) throws IOException, Exception, URISyntaxException {
        
        		Configuration conf = new Configuration();
        //		conf.set("fs.defaultFS", "hdfs://192.168.220.201:9000");
        
        		// 1.获取hdfs客户端对象
        //		FileSystem fs = FileSystem.get(conf );
        		FileSystem fs = FileSystem.get(new URI("hdfs://192.168.220.201:9000"), conf, "hadoop");
        		//这一行代码相当于上面注释的两行代码
        		
        		// 2.在hdfs上创建路径
        		fs.mkdirs(new Path("/0219/table/output"));
        
        		// 3.关闭资源
        		fs.close();
        
        		System.out.println("over");
        		
        		FileSystem fileSystem = FileSystem.get(conf);
        	}
        }
        
      • 1.7、 执行程序
        运行时需要配置用户名称:右键->run as -> run configurations
        Hadoop学习笔记(二)Hadoop 分布式文件系统 HDFS:1.HDFS基础
        注意:一定要先点一下Java Application创建一个新的HDFSClient(1)把老的HDFSClient删除掉。
        客户端去操作HDFS时,是有一个用户身份的。默认情况下,HDFS客户端API会从JVM中获取一个参数来作为自己的用户身份:
        -DHADOOP_USER_NAME=hadoop,hadoop为用户名称。
    • 2. HDFS的API操作

    • 3. HDFS的I/O流操作

相关标签: Hadoop