Как да чета от hdfs с помощта на spark-shell в Intel hadoop?

Не мога да чета от HDFS (разпределение на Intel hadoop, версията на Hadoop е 1.0.3) от spark-shell (версията на spark е 1.2.1). Създадох spark с помощта на командата mvn -Dhadoop.version=1.0.3 clean package, стартирах spark-shell и прочетох HDFS файл с помощта на sc.textFile() и изключението е:

ПРЕДУПРЕЖДЕНИЕ hdfs.DFSClient: Неуспешно свързване към /10.xx.xx.xx:50010, добавяне към deadNodes и continuejava.net.SocketTimeoutException: 120 000 милисекунди изчакване, докато се чака каналът да бъде готов за четене. ch: java.nio.channels.SocketChannel[connected local=/10.xx.xx.xx:44264 remote=/10.xx.xx.xx:50010] ... ГРЕШКА executor.Executor: Изключение в задача 1.0 в етап 0.0 (TID 1) java.io.IOException: Не може да се получи блок: blk_8724894648624652503_7309 file=/research/Files/README.md

Същият въпрос е зададен тук: http://mail-archives.us.apache.org/mod_mbox/spark-user/201309.mbox/%3CF97ADEE4FBA8F6478453E148FE9E2E8D3CCA37A9@HASMSX106.ger.corp.intel.com%3E

Това беше предложеното решение:

"В допълнение към указването на HADOOP_VERSION=1.0.3 във файла ./project/SparkBuild.scala, ще трябва да посочите библиотечните зависимости и име "spark-core" преобразуватели. В противен случай sbt ще извлече версия 1.0.3 на hadoop-core от apache вместо Intel Можете да настроите собствено локално или отдалечено хранилище, което посочите"

Може ли някой да разясни как да уточним, че SBT трябва да извлича hadoop-core от Intel (което е налично в нашето вътрешно хранилище)?


person Hrishikesh    schedule 26.02.2015    source източник


Отговори (1)


Опитайте се да разгледате тази страница от документацията

Spark използва някои SBT/maven интеграции, за които не знам много, но изглежда, че хранилищата са посочени в pom.xml в корена

Ако това не работи, можете да проучите къде е sbt-файловете указват resolvers.


За протокола, това е извадка от свързаната документация

Свързване на приложения с версията на Hadoop

В допълнение към компилирането на самия Spark спрямо правилната версия, трябва да добавите зависимост на Maven към тази версия на hadoop-клиента към всяко приложение на Spark, което изпълнявате, така че те също да могат да общуват с HDFS версията на клъстера. Ако използвате CDH, трябва също да добавите хранилището на Cloudera Maven. Това изглежда по следния начин в SBT:

libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "<version>"

// If using CDH, also add Cloudera repo
resolvers += "Cloudera Repository" at "https://repository.cloudera.com/artifactory/cloudera-repos/"

Или в Maven:

<project>
  <dependencies>
    ...
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>[version]</version>
    </dependency>
  </dependencies>

  <!-- If using CDH, also add Cloudera repo -->
  <repositories>
    ...
    <repository>
      <id>Cloudera repository</id>
      <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    </repository>
  </repositories>
</project>
person Tobber    schedule 26.02.2015
comment
Благодаря ви за отговора. Опитах се да модифицирам основния POM.xml, за да включва нашето вътрешно хранилище, където имаме hadoop-core jar за 1.0.3-Intel разпространение на hadoop. Но изграждането се проваля със следната грешка: [ERROR] Failed to read artifact descriptor for org.apache.hadoop:hadoop-client:jar:1.0.3-Intel: Could not transfer artifact org.apache.hadoop:hadoop-client:pom:1.0.3-Intel from/to internal (http://192.168.150.180:8081/archiva/repository/internal) Нямаме hadoop-клиента за hadoop-1.0.3-Intel версия, която изглежда също не е достъпна в мрежата. Всяко друго решение. - person Hrishikesh; 02.03.2015
comment
съжалявам Нямам никакъв опит с дистрибуции на hadoop от трети страни или какво зависи от hadoop-client. - person Tobber; 02.03.2015