亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hadoop集成Spring的使用

發布時間:2020-07-10 10:11:05 來源:網絡 閱讀:73656 作者:ZeroOne01 欄目:大數據

Spring Hadoop簡單概述

Spring Hadoop官網地址如下:

https://projects.spring.io/spring-hadoop/

Spring Hadoop簡化了Apache Hadoop,提供了一個統一的配置模型以及簡單易用的API來使用HDFS、MapReduce、Pig以及Hive。還集成了其它Spring生態系統項目,如Spring Integration和Spring Batch.。

特點:

  • 支持創建Hadoop應用,配置使用依賴注入和運行標準的java應用程序和使用Hadoop的命令行工具。
  • 集成Spring Boot,可以簡單地創建Spring應用程序去連接HDFS進行讀寫數據。
  • 創建和配置,使用java的MapReduce,Streaming,Hive,Pig或HBase。
  • 擴展Spring Batch支持創建基于Hadoop的工作流的任何類型的Hadoop Job或HDFS的操作。
  • 腳本HDFS操作使用任何基于JVM的腳本語言。
  • 基于SpringBoot輕松地創建自定義的基礎應用,應用可以部署在YARN上。
  • 支持DAO,可以使用模板或回調的方式操作Hbase
  • 支持Hadoop安全驗證

Spring Hadoop2.5的官方文檔及API地址:

https://docs.spring.io/spring-hadoop/docs/2.5.0.RELEASE/reference/html/
https://docs.spring.io/spring-hadoop/docs/2.5.0.RELEASE/api/


Spring Hadoop開發環境搭建及訪問HDFS文件系統

創建一個maven工程,配置依賴如下:

<repositories>
    <repository>
      <id>cloudera</id>
      <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <hadoop.version>2.6.0-cdh6.7.0</hadoop.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>${hadoop.version}</version>
      <scope>provided</scope>
    </dependency>
    <!-- 添加UserAgent解析的依賴 -->
    <dependency>
      <groupId>com.kumkee</groupId>
      <artifactId>UserAgentParser</artifactId>
      <version>0.0.1</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
      <scope>test</scope>
    </dependency>
    <!-- 添加Spring Hadoop的依賴 -->
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-hadoop</artifactId>
      <version>2.5.0.RELEASE</version>
    </dependency>
  </dependencies>

  <!-- mvn assembly:assembly -->
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <mainClass></mainClass>
            </manifest>
          </archive>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

在工程中創建resource目錄以及配置文件,配置文件的名可以自定義,配置文件中增加如下內容:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:hdp="http://www.springframework.org/schema/hadoop"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/hadoop
        http://www.springframework.org/schema/hadoop/spring-hadoop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 加載屬性文件 -->
    <context:property-placeholder location="application.properties"/>
    <hdp:configuration id="hadoopConfiguration">
        <!-- 服務器的url -->
        fs.defaultFS=${spring.hadoop.fsUri}
    </hdp:configuration>
    <!-- 裝配文件系統bean以及操作用戶 -->
    <hdp:file-system id="fileSystem" configuration-ref="hadoopConfiguration" user="root"/>
</beans>

然后再創建一個屬性文件application.properties(文件名稱可自定義),把一些容易改變的配置信息配置在屬性文件下,例如我這里是將服務器的url配置在屬性文件里,內容如下:

spring.hadoop.fsUri=hdfs://192.168.77.128:8020

完成以上操作之后,我們的Spring Hadoop開發環境就算是搭建完成了,畢竟使用Maven就是方便。

接下來我們來創建個測試類,測試一下是否能夠正常對HDFS文件系統進行操作:

package org.zero01.spring;

import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

/**
 * @program: hadoop-train
 * @description: 使用Spring Hadoop來訪問HDFS文件系統
 * @author: 01
 * @create: 2018-04-04 17:39
 **/
public class SpringHadoopApp {

    private ApplicationContext ctx;
    private FileSystem fileSystem;

    @Before
    public void setUp() {
        ctx = new ClassPathXmlApplicationContext("beans.xml");
        fileSystem = (FileSystem) ctx.getBean("fileSystem");
    }

    @After
    public void tearDown() throws IOException {
        ctx = null;
        fileSystem.close();
    }

    /**
     * 在HDFS上創建一個目錄
     * @throws Exception
     */
    @Test
    public void testMkdirs()throws Exception{
        fileSystem.mkdirs(new Path("/SpringHDFS/"));
    }
}

以上的代碼是執行成功的,然后到服務器上查看一下根目錄下是否有SpringHDFS這個目錄:

[root@hadoop000 ~]# hdfs dfs -ls /
Found 7 items
-rw-r--r--   3 root supergroup    2769741 2018-04-02 21:13 /10000_access.log
drwxr-xr-x   - root supergroup          0 2018-04-04 17:50 /SpringHDFS
drwxr-xr-x   - root supergroup          0 2018-04-02 21:22 /browserout
drwxr-xr-x   - root supergroup          0 2018-04-02 20:29 /data
drwxr-xr-x   - root supergroup          0 2018-04-02 20:31 /logs
drwx------   - root supergroup          0 2018-04-02 20:39 /tmp
drwxr-xr-x   - root supergroup          0 2018-04-02 20:39 /user
[root@hadoop000 ~]# hdfs dfs -ls /SpringHDFS
[root@hadoop000 ~]# 

可以看到SpringHDFS目錄已經成功被創建了,這就代表我們配置的工程沒有問題。

既然創建目錄沒有問題,我們就再來寫一個測試方法,用來讀取HDFS上某個文件的內容,代碼如下:

/**
 * 讀取HDFS上的文件內容
 * @throws Exception
 */
@Test
public void testText()throws Exception{
    FSDataInputStream in = fileSystem.open(new Path("/browserout/part-r-00000"));
    IOUtils.copyBytes(in, System.out, 1024);
    in.close();
}

以上的代碼執行成功,控制臺輸出結果如下:

Chrome  2775
Firefox 327
MSIE    78
Safari  115
Unknown 6705

讀和寫都沒有問題了,這下就能愉快的在工程里使用Spring Hadoop簡化我們的開發了。


Spring Boot訪問HDFS文件系統

以上介紹了Spring Hadoop訪問HDFS,接下來再簡單介紹一下使用Spring Boot訪問HDFS,使用Spring Boot會更加簡單。

首先需要在pom.xml文件中,加入Spring Boot的依賴:

<!-- 添加Spring Boot的依賴 -->
<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-hadoop-boot</artifactId>
  <version>2.5.0.RELEASE</version>
</dependency>
package org.zero01.spring;

import org.apache.hadoop.fs.FileStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.hadoop.fs.FsShell;

/**
 * @program: hadoop-train
 * @description: 使用spring boot來訪問HDFS
 * @author: 01
 * @create: 2018-04-04 18:45
 **/
@SpringBootApplication
public class SpringBootHDFSApp implements CommandLineRunner {

    @Autowired
    FsShell fsShell;  // 用于執行hdfs shell命令的對象

    public void run(String... strings) throws Exception {
        // 查看根目錄下的所有文件
        for (FileStatus fileStatus : fsShell.ls("/")) {
            System.out.println("> " + fileStatus.getPath());
        }
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringBootHDFSApp.class, args);
    }
}

控制臺輸出如下:

> hdfs://192.168.77.128:8020/
> hdfs://192.168.77.128:8020/10000_access.log
> hdfs://192.168.77.128:8020/SpringHDFS
> hdfs://192.168.77.128:8020/browserout
> hdfs://192.168.77.128:8020/data
> hdfs://192.168.77.128:8020/logs
> hdfs://192.168.77.128:8020/tmp
> hdfs://192.168.77.128:8020/user
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

霍山县| 蒙山县| 汉川市| 灵石县| 太白县| 凤山市| 灵丘县| 巢湖市| 固安县| 文化| 岗巴县| 平南县| 莱西市| 深州市| 高雄市| 修文县| 广汉市| 临猗县| 竹溪县| 香港| 济阳县| 高雄市| 富阳市| 东方市| 伊金霍洛旗| 玉屏| 衡水市| 乌拉特前旗| 天柱县| 大兴区| 哈巴河县| 诸城市| 乐至县| 于田县| 朝阳市| 仪征市| 通化县| 海原县| 万盛区| 洛阳市| 容城县|