天天看點

在檔案存儲 HDFS 上使用 Apache Flink

在檔案存儲 HDFS 上使用 Apache Flink

鏡像下載下傳、域名解析、時間同步請點選

阿裡巴巴開源鏡像站

一、準備工作

在檔案存儲HDFS上使用Apache Flink,需要先完成以下準備工作。

說明 本文檔的操作步驟中涉及的安裝包版本号、檔案夾路徑,請根據實際情況進行替換。
  1. 開通檔案存儲HDFS服務并建立檔案系統執行個體和挂載點,詳情請參見 HDFS快速入門
  2. 在計算節點上安裝JDK。版本不能低于1.8。
  3. 在計算節點上安裝Scala。Scala下載下傳位址: 官方連結 ,其版本要與使用的Apache Flink版本相相容。
  4. 下載下傳Apache Hadoop壓縮包。Apache Hadoop下載下傳位址: 。建議您選用的Apache Hadoop版本不低于2.7.2,本文檔中使用的Apache Hadoop版本為Apache Hadoop 2.7.2。
  5. 下載下傳Apache Flink壓縮包。在檔案存儲HDFS上使用的Flink的版本必須為1.9.0及以上,Apache Flink下載下傳位址: 。本文檔中使用的Flink版本為官方提供的預編譯版本Flink 1.9.0。

二、配置Apache Hadoop

1、執行如下指令解壓Apache Hadoop壓縮包到指定檔案夾。

tar -zxvf hadoop-2.7.2.tar.gz -C /usr/local/           

2、修改hadoop-env.sh配置檔案。

  • 執行如下指令打開hadoop-env.sh配置檔案。
vim /usr/local/hadoop-2.7.2/etc/hadoop/hadoop-env.sh           
  • 配置JAVA_HOME目錄,如下所示。
export JAVA_HOME=/usr/java/default           

3、修改core-site.xml配置檔案。

  • 執行如下指令打開core-site.xml配置檔案。
vim /usr/local/hadoop-2.7.2/etc/hadoop/core-site.xml           
<configuration>
<property>
     <name>fs.defaultFS</name>
     <value>dfs://x-xxxxxxxx.cn-xxxxx.dfs.aliyuncs.com:10290</value>
     <!-- 該位址填寫您的挂載點位址 -->
</property>
<property>
     <name>fs.dfs.impl</name>
     <value>com.alibaba.dfs.DistributedFileSystem</value>
</property>
<property>
     <name>fs.AbstractFileSystem.dfs.impl</name>
     <value>com.alibaba.dfs.DFS</value>
</property>
<property>
     <name>io.file.buffer.size</name>
     <value>8388608</value>
</property>
<property>
     <name>alidfs.use.buffer.size.setting</name>
     <value>true</value>
</property>
<property>
     <name>dfs.usergroupservice.impl</name>
     <value>com.alibaba.dfs.security.LinuxUserGroupService.class</value>
</property>
  <property>
     <name>dfs.connection.count</name>
     <value>16</value>
</property>
</configuration>           

4、修改mapred-site.xml配置檔案。

  • 執行如下指令打開mapred-site.xml配置檔案。
vim /usr/local/hadoop-2.7.2/etc/hadoop/mapred-site.xml           
  • 在mapred-site.xml配置檔案中,配置如下資訊。
<configuration>
<property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
</property>
</configuration>           

5、修改yarn-site.xml配置檔案。

  • 執行如下指令打開yarn-site.xml配置檔案。
vim /usr/local/hadoop-2.7.2/etc/hadoop/yarn-site.xml           
  • 在yarn-site.xml配置檔案中,配置如下資訊。
<configuration>
<property>
  <name>yarn.resourcemanager.hostname</name>
  <value>xxxx</value>
  <!-- 該位址填寫叢集中yarn的resourcemanager的hostname -->
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
  <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
  <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>16384</value>
    <!-- 根據您目前的叢集能力進行配置此項 -->
</property>
<property>
  <name>yarn.nodemanager.resource.cpu-vcores</name>
  <value>4</value>
     <!-- 根據您目前的叢集能力進行配置此項 -->
</property>
<property>
  <name>yarn.scheduler.maximum-allocation-vcores</name>
  <value>4</value>
    <!-- 根據您目前的叢集能力進行配置此項 -->
</property>
<property>
  <name>yarn.scheduler.minimum-allocation-mb</name>
  <value>3584</value>
    <!-- 根據您目前的叢集能力進行配置此項 -->
</property>
<property>
  <name>yarn.scheduler.maximum-allocation-mb</name>
  <value>14336</value>
    <!-- 根據您目前的叢集能力進行配置此項 -->
</property>
</configuration>           

6、修改slaves配置檔案。

  • 執行如下指令打開slaves配置檔案。
vim /usr/local/hadoop-2.7.2/etc/hadoop/slaves           
  • 在slaves配置檔案中,配置如下資訊。
node1
node2           

7、配置環境變量。

  • 執行如下指令打開/etc/profile配置檔案。
vim /etc/profile           
  • 在/etc/profile配置檔案中,配置如下資訊。
export HADOOP_HOME=/usr/local/hadoop-2.7.2
export HADOOP_CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath)
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH           
  • 執行如下指令使配置生效。
source /etc/profile           

8、執行如下指令配置檔案存儲HDFS的SDK。您可以單擊

下載下傳檔案存儲HDFS的SDK

(此處以aliyun-sdk-dfs-1.0.3.jar為例),将其部署在Apache Hadoop生态系統元件的CLASSPATH上,詳情請參見

cp aliyun-sdk-dfs-1.0.3.jar  /usr/local/hadoop-2.7.2/share/hadoop/hdfs           

9、執行如下指令将${HADOOP_HOME}檔案夾同步到叢集的其他節點。

scp -r hadoop-2.7.2/ root@node2:/usr/local/           

三、驗證Apache Hadoop配置

完成Apache Hadoop配置後,不需要格式化namenode,也不需要使用start-dfs.sh來啟動HDFS相關服務。如需使用yarn服務,隻需在resourcemanager節點啟動yarn服務,具體驗證Apache Hadoop配置成功的方法請參見

驗證安裝

四、編譯flink-shade

1、下載下傳

flink-shade

源碼到指定目錄。

git clone https://github.com/apache/flink-shaded.git  ~/flink-shade           

2、修改flink-shade源碼中的pom檔案。修改Hadoop版本為您的叢集中使用的版本,在本文檔中使用的Hadoop版本為2.7.2。

vim  ~/flink-shaded/flink-shaded-hadoop-2-parent/pom.xml           
在檔案存儲 HDFS 上使用 Apache Flink

在依賴項中添加檔案存儲HDFS SDK,在本文檔使用檔案存儲HDFS SDK版本為1.0.3。

vim  ~/flink-shaded/flink-shaded-hadoop-2-parent/flink-shaded-hadoop-2/pom.xml
...
<dependency>
       <groupId>com.aliyun.dfs</groupId>
       <artifactId>aliyun-sdk-dfs</artifactId>
       <version>1.0.3</version>
</dependency>
...           
在檔案存儲 HDFS 上使用 Apache Flink

3、編譯打包。

cd ~/flink-shaded
mvn package -Dshade-sources           

五、配置Apache Flink

1、執行如下指令解壓Flink壓縮包到指定檔案夾。

tar -zxvf flink-1.9.0-bin-scala_2.11.tgz -C /usr/local/           

2、拷貝flink-shade編譯的flink-shaded-hadoop-2-uber-x.y.z.jar到Flink的lib目錄下。

cp  ~/flink-shaded/flink-shaded-hadoop-2-parent/flink-shaded-hadoop-2-uber/target/flink-shaded-hadoop-2-uber-2.7.2-11.0.jar /usr/local/flink-1.9.0/lib/           
說明
  • 在使用Apache Flink之前必須在您的叢集環境變量中配置HADOOP_HOME,HADOOP_CLASSPATH和HADOOP_CONF_DIR,詳情請參見 配置Apache Hadoop 中的步驟7:配置環境變量。
  • 如果您使用的Flink版本中已經包含

    flink-shaded-hadoop-2-uber-x.y.z.jar

    ,則需要使用 編譯flink-shade 中編譯的

    flink-shaded-hadoop-2-uber-x.y.z.jar

    進行替換。
  • 如果您需要對Flink進行額外的配置,請參考官方文檔: 配置操作指南

六、驗證Apache Flink配置

使用Flink自帶的WordCount.jar對檔案存儲HDFS上的資料進行讀取,并将計算結果寫入到檔案存儲HDFS,在測試之前需要先啟動yarn服務。

1、生成測試資料。此處使用Apache Hadoop 2.7.2自帶的jar包hadoop-mapreduce-examples-2.7.2.jar中的randomtextwriter方法在檔案存儲HDFS上生成測試資料。

/usr/local/hadoop-2.7.2/bin/hadoop jar  /usr/local/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar 
randomtextwriter \
-D mapreduce.randomtextwriter.totalbytes=10240 \
-D mapreduce.randomtextwriter.bytespermap=1024 \
-D mapreduce.job.maps=4  \
-D mapreduce.job.reduces=2  \
dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290/flink-test/input \           

其中,dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290為檔案存儲HDFS的挂載點,請根據您的實際情況替換。

2、檢視在檔案存儲HDFS上生成的測試資料。

/usr/local/hadoop-2.7.2/bin/hadoop fs -cat dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290/flink-test/input/*           

3、送出wordcount程式。

/usr/local/flink-1.9.0/bin/flink run 
-m yarn-cluster -yn 1 -yjm 1024 -ytm 1024 \
/usr/local/flink-1.9.0/examples/batch/WordCount.jar \
--input dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290/flink-test/input \
--output dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290/flink-test/output \           

4、檢視在檔案存儲HDFS上的結果檔案。

/usr/local/hadoop-2.7.2/bin/hadoop fs -cat dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290/flink-test/output           
在檔案存儲 HDFS 上使用 Apache Flink
提供全面,高效和穩定的鏡像下載下傳服務。釘釘搜尋 ' 21746399 ‘ 加入鏡像站官方使用者交流群。”