Как настроить Stocator на Amazon EMR
Я пытаюсь настроить Stocator в кластере Amazon EMR для доступа к данным на Amazon s3. Я нашел ресурсы, которые указывают, что это должно быть возможно, но очень мало деталей о том, как заставить это работать.
Когда я запускаю свой кластер EMR, я использую следующую конфигурацию:
{
"classification": "core-site",
"properties": {
"fs.stocator.scheme.list": "cos",
"fs.cos.impl": "com.ibm.stocator.fs.ObjectStoreFileSystem",
"fs.stocator.cos.impl": "com.ibm.stocator.fs.cos.COSAPIClient",
"fs.stocator.cos.scheme":"cos"
}
}
Затем я пытаюсь получить доступ к файлу, используя cos://mybucket.service/myfile
Это приводит к ошибке из-за отсутствия учетных данных.
Я добавляю учетные данные, в spark-shell
, к свойствам используя:
val credentials = new com.amazonaws.auth.DefaultAWSCredentialsProviderChain().getCredentials
sc.hadoopConfiguration.set("fs.cos.service.access.key",credentials.getAWSAccessKeyId)
sc.hadoopConfiguration.set("fs.cos.service.secret.key",credentials.getAWSSecretKey)
Теперь, когда я пытаюсь получить доступ cos://mybucket.service/myfile
Я получаю ошибку: org.apache.spark.sql.AnalysisException: Path does not exist:
,
доступ к файлу с помощью s3://mybucket/myfile
работает, так как не использует Stocator. Также работает доступ к файлу через интерфейс командной строки amazon.
Существуют ли онлайн-ресурсы, подробно описывающие, как получить Stocator
работа над AWS
?
Кто-нибудь успешно сделал это самостоятельно, и вы можете поделиться своей конфигурацией?
1 ответ
- Вы можете просто связаться с Гилом Верником и попросить совета. Убедитесь, что он работает с семантикой согласованности EMR S3; Я считаю, что это должно.
- Hadoop 3.1 имеет свои собственные высокопроизводительные коммиттеры, вероятно, быстрее, чем Stocator. (но я бы сказал, не так ли?)
- И часть исходного кода для этого кода поступила от коммиттера Netflix S3A.
Я бы поиграл с Netflix, так как я уверен, что он там хорошо работает.