StefanRRichter commented on a change in pull request #7123: [FLINK-10865] Add Aliyun OSS file systems without Hadoop dependencies URL: https://github.com/apache/flink/pull/7123#discussion_r236347738
########## File path: docs/ops/deployment/oss.md ########## @@ -0,0 +1,233 @@ +--- +title: "Aliyun Open Storage Service (OSS)" +nav-title: Aliyun OSS +nav-parent_id: deployment +nav-pos: 9 +--- +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +* ToC +{:toc} + + +## OSS: Open Storage Service + +[Aliyun Open Storage Service](https://www.aliyun.com/product/oss) (Aliyun OSS) is widely used especially among China’s cloud users, and it provides cloud object storage for a variety of use cases. + +[Hadoop file system](http://hadoop.apache.org/docs/current/hadoop-aliyun/tools/hadoop-aliyun/index.html) supports OSS since version 2.9.1. Now, you can also use OSS with Fink for **reading** and **writing data**. + +You can access OSS objects like this: + +{% highlight plain %} +oss://<your-bucket>/<object-name> +{% endhighlight %} + +Below shows how to use OSS with Flink: + +{% highlight java %} +// Read from OSS bucket +env.readTextFile("oss://<your-bucket>/<object-name>"); + +// Write to OSS bucket +dataSet.writeAsText("oss://<your-bucket>/<object-name>") + +{% endhighlight %} + +There are two ways to use OSS with Flink, our shaded `flink-oss-fs-hadoop` will cover most scenarios. However, you may need to set up a specific Hadoop OSS FileSystem implementation if you want use OSS as YARN's resource storage dir([This patch](https://issues.apache.org/jira/browse/HADOOP-15919) enables YARN to use OSS). Both ways are described below. + +### Shaded Hadoop OSS file system (recommended) + +In order to use `flink-oss-fs-hadoop`, copy the respective JAR file from the opt directory to the lib directory of your Flink distribution before starting Flink, e.g. + +{% highlight bash %} +cp ./opt/flink-oss-fs-hadoop-{{ site.version }}.jar ./lib/ +{% endhighlight %} + +`flink-oss-fs-hadoop` registers default FileSystem wrappers for URIs with the oss:// scheme. + +#### Configurations setup +After setting up the OSS FileSystem wrapper, you need to add some configurations to make sure that Flink is allowed to access your OSS buckets. + +In order to use OSS with Flink more easily, you can use the same configuration keys in `flink-conf.yaml` with which in Hadoop's `core-site.xml` + +You can see configuration keys in [Hadoop OSS documentation](http://hadoop.apache.org/docs/current/hadoop-aliyun/tools/hadoop-aliyun/index.html). + +There are some required configurations must be added to `flink-conf.yaml`(**Other configurations defined in Hadoop OSS documentation are advanced configurations which used by performance tuning**): + +{% highlight yaml %} +fs.oss.endpoint: Aliyun OSS endpoint to connect to +fs.oss.accessKeyId: Aliyun access key ID +fs.oss.accessKeySecret: Aliyun access key secret +{% endhighlight %} + +### Hadoop-provided OSS file system - manual setup +This setup is a bit more complex and we recommend using our shaded Hadoop file systems instead (see above) unless required otherwise, e.g. for using OSS as YARN’s resource storage dir via the fs.defaultFS configuration property in Hadoop’s core-site.xml. + +#### Set OSS FileSystem +You need to point Flink to a valid Hadoop configuration, which contains the following properties in core-site.xml: + +{% highlight xml %} +<configuration> + +<property> + <name>fs.oss.impl</name> + <value>org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem</value> + </property> + + <property> + <name>fs.oss.endpoint</name> + <value>Aliyun OSS endpoint to connect to</value> + <description>Aliyun OSS endpoint to connect to. An up-to-date list is provided in the Aliyun OSS Documentation.</description> + </property> + + <property> + <name>fs.oss.accessKeyId</name> + <description>Aliyun access key ID</description> + </property> + + <property> + <name>fs.oss.accessKeySecret</name> + <description>Aliyun access key secret</description> + </property> + + <property> + <name>fs.oss.buffer.dir</name> + <value>/tmp/oss</value> + </property> + +</property> + +</configuration> +{% endhighlight %} + +#### Hadoop Configuration + +You can specify the [Hadoop configuration](../config.html#hdfs) in various ways pointing Flink to +the path of the Hadoop configuration directory, for example +- by setting the environment variable `HADOOP_CONF_DIR`, or +- by setting the `fs.hdfs.hadoopconf` configuration option in `flink-conf.yaml`: +{% highlight yaml %} +fs.hdfs.hadoopconf: /path/to/etc/hadoop +{% endhighlight %} + +This registers `/path/to/etc/hadoop` as Hadoop's configuration directory with Flink. Flink will look for the `core-site.xml` and `hdfs-site.xml` files in the specified directory. + +#### Provide OSS FileSystem Dependency + +You can find Hadoop OSS FileSystem are packaged in the hadoop-aliyun artifact. This JAR and all its dependencies need to be added to Flink’s classpath, i.e. the class path of both Job and TaskManagers. + +There are multiple ways of adding JARs to Flink’s class path, the easiest being simply to drop the JARs in Flink’s lib folder. You need to copy the hadoop-aliyun JAR with all its dependencies(You can find these as part of the Hadoop binaries in hadoop-3/share/hadoop/tools/lib). You can also export the directory containing these JARs as part of the HADOOP_CLASSPATH environment variable on all machines. + +## An Example +Below is an example shows the result of our setup(Data is generated by TPC-DS tool) Review comment: missing space **...setup (data ...** ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services
