8.9. 远程文件系统支持¶
通过Hadoop的文件系统支持,GeoMesa支持直接从远程文件系统获取文件,包括Amazon的S3和Microsoft的Azure。
注意:下面的示例使用了Acumulo工具,但也应该适用于任何其他发行版。
8.9.1. 启用S3接收¶
Hadoop附带了基于S3的文件系统的实现,可以在与GeoMesa工具一起使用的Hadoop配置中启用。具体地说,GeoMesa工具可以使用第二代 (s3n )和第三代 (s3a )文件系统。编辑 $HADOOP_CONF_DIR/core-site.xml
如下所示(这些说明适用于Hadoop 2.5.0及更高版本)。请注意,您必须具有环境变量 $HADOOP_MAPRED_HOME
在您的环境中正确设置。一些配置可以替代 $HADOOP_PREFIX
在下面的类路径值中。
警告
AWS凭据很有价值!他们为服务付费,并控制数据的读写保护。如果您在AWS EC2实例上运行GeoMesa,建议使用 s3a
文件系统。使用 s3a
中,您可以省略访问密钥ID和秘密访问密钥 core-site.xml 并依赖于IAM的角色。
8.9.1.1. 配置¶
为 s3a
:
<!-- core-site.xml -->
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*:$HADOOP_MAPRED_HOME/share/hadoop/tools/lib/*</value>
<description>The classpath specifically for Map-Reduce jobs. This override is needed so that s3 URLs work on Hadoop 2.6.0+</description>
</property>
<!-- OMIT these keys if running on AWS EC2; use IAM roles instead -->
<property>
<name>fs.s3a.access.key</name>
<value>XXXX YOURS HERE</value>
</property>
<property>
<name>fs.s3a.secret.key</name>
<value>XXXX YOURS HERE</value>
<description>Valuable credential - do not commit to CM</description>
</property>
在Hadoop配置中启用S3后,您可以使用GeoMesa工具进行摄取。请注意,您仍可以在S3中使用Kleene星号(*):
$ geomesa-accumulo ingest -u username -p password -c geomesa_catalog -i instance -s yourspec -C convert s3a://bucket/path/file*
为 s3n
:
<!-- core-site.xml -->
<!-- Note that you need to make sure HADOOP_MAPRED_HOME is set or some other way of getting this on the classpath -->
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*:$HADOOP_MAPRED_HOME/share/hadoop/tools/lib/*</value>
<description>The classpath specifically for map-reduce jobs. This override is needed so that s3 URLs work on hadoop 2.6.0+</description>
</property>
<property>
<name>fs.s3n.impl</name>
<value>org.apache.hadoop.fs.s3native.NativeS3FileSystem</value>
<description>Tell hadoop which class to use to access s3 URLs. This change became necessary in hadoop 2.6.0</description>
</property>
<property>
<name>fs.s3n.awsAccessKeyId</name>
<value>XXXX YOURS HERE</value>
</property>
<property>
<name>fs.s3n.awsSecretAccessKey</name>
<value>XXXX YOURS HERE</value>
</property>
在Hadoop中,S3n路径前缀为 s3n://
如下所示:
$ geomesa-accumulo ingest -u username -p password \
-c geomesa_catalog -i instance -s yourspec \
-C convert s3n://bucket/path/file s3n://bucket/path/*
8.9.2. 启用Azure接收¶
Hadoop附带了基于Azure的文件系统的实现,可以在与GeoMesa工具一起使用的Hadoop配置中启用。具体地说,GeoMesa工具可以使用 wasb
和 wasbs
文件系统。编辑 $HADOOP_CONF_DIR/core-site.xml
如下所示(这些说明适用于Hadoop 2.5.0及更高版本)。此外,还需要提供Hadoop-azure和Azure存储罐。
警告
Azure凭据很有价值!他们为服务付费,并控制数据的读写保护。确保您的core-site.xml配置文件的安全。建议您使用Azure的启用SSL的文件协议变体 wasbs
在可能的情况下。
8.9.2.1. 配置¶
要启用该功能,请在Hadoop安装的core-site.xml中放置以下内容。
<!-- core-site.xml -->
<property>
<name>fs.azure.account.key.ACCOUNTNAME.blob.core.windows.net</name>
<value>XXXX YOUR ACCOUNT KEY</value>
</property>
在Hadoop配置中启用Azure后,您可以使用GeoMesa工具进行摄取。请注意,您仍然可以在Azure中使用Kleene星号(*):
$ geomesa-accumulo ingest -u username -p password \
-c geomesa_catalog -i instance -s yourspec \
-C convert wasb://CONTAINER@ACCOUNTNAME.blob.core.windows.net/files/*