복붙노트

[HADOOP] Spark를 사용하여 HDFS에서 파일을 읽을 수 없습니다.

HADOOP

Spark를 사용하여 HDFS에서 파일을 읽을 수 없습니다.

cloudera 관리자를 사용하여 cloudera CDH 5를 설치했습니다.

나는 쉽게 할 수있다.

hadoop fs -ls /input/war-and-peace.txt
hadoop fs -cat /input/war-and-peace.txt

이 위 명령은 콘솔에 전체 txt 파일을 인쇄합니다.

지금 나는 불꽃 껍질을 시작하고 말한다.

val textFile = sc.textFile("hdfs://input/war-and-peace.txt")
textFile.count

이제 오류가 발생했습니다.

sc와 같은 컨텍스트를 사용할 수 있습니다.

scala> val textFile = sc.textFile("hdfs://input/war-and-peace.txt")
2014-12-14 15:14:57,874 INFO  [main] storage.MemoryStore (Logging.scala:logInfo(59)) - ensureFreeSpace(177621) called with curMem=0, maxMem=278302556
2014-12-14 15:14:57,877 INFO  [main] storage.MemoryStore (Logging.scala:logInfo(59)) - Block broadcast_0 stored as values in memory (estimated size 173.5 KB, free 265.2 MB)
textFile: org.apache.spark.rdd.RDD[String] = hdfs://input/war-and-peace.txt MappedRDD[1] at textFile at <console>:12

scala> textFile.count
2014-12-14 15:15:21,791 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 0 time(s); maxRetries=45
2014-12-14 15:15:41,905 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 1 time(s); maxRetries=45
2014-12-14 15:16:01,925 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 2 time(s); maxRetries=45
2014-12-14 15:16:21,983 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 3 time(s); maxRetries=45
2014-12-14 15:16:42,001 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 4 time(s); maxRetries=45
2014-12-14 15:17:02,062 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 5 time(s); maxRetries=45
2014-12-14 15:17:22,082 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 6 time(s); maxRetries=45
2014-12-14 15:17:42,116 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 7 time(s); maxRetries=45
2014-12-14 15:18:02,138 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 8 time(s); maxRetries=45
2014-12-14 15:18:22,298 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 9 time(s); maxRetries=45
2014-12-14 15:18:42,319 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 10 time(s); maxRetries=45
2014-12-14 15:19:02,354 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 11 time(s); maxRetries=45
2014-12-14 15:19:22,373 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 12 time(s); maxRetries=45
2014-12-14 15:19:42,424 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 13 time(s); maxRetries=45
2014-12-14 15:20:02,446 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 14 time(s); maxRetries=45
2014-12-14 15:20:22,512 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 15 time(s); maxRetries=45
2014-12-14 15:20:42,515 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 16 time(s); maxRetries=45
2014-12-14 15:21:02,550 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 17 time(s); maxRetries=45
2014-12-14 15:21:22,558 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 18 time(s); maxRetries=45
2014-12-14 15:21:42,683 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 19 time(s); maxRetries=45
2014-12-14 15:22:02,702 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 20 time(s); maxRetries=45
2014-12-14 15:22:22,832 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 21 time(s); maxRetries=45
2014-12-14 15:22:42,852 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 22 time(s); maxRetries=45
2014-12-14 15:23:02,974 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 23 time(s); maxRetries=45
2014-12-14 15:23:22,995 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 24 time(s); maxRetries=45
2014-12-14 15:23:43,109 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 25 time(s); maxRetries=45
2014-12-14 15:24:03,128 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 26 time(s); maxRetries=45
2014-12-14 15:24:23,250 INFO  [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 27 time(s); maxRetries=45
java.net.ConnectException: Call From dn1home/192.168.1.21 to input:8020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:783)
        at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:730)
        at org.apache.hadoop.ipc.Client.call(Client.java:1415)

왜이 오류가 발생 했습니까? hadoop 명령을 사용하여 동일한 파일을 읽을 수 있습니까?

해결법

  1. ==============================

    1.여기에 해결책이있다.

    여기에 해결책이있다.

    sc.textFile("hdfs://nn1home:8020/input/war-and-peace.txt")
    

    nn1home : 8020을 어떻게 찾았습니까?

    core-site.xml 파일을 검색하고 xml 요소 fs.defaultFS를 찾으십시오.

  2. ==============================

    2.sc.textFile ( "hdfs : // ...")을 사용하려면 "nn1home : 8020 / .."과 같이 전체 경로 (절대 경로)를 지정해야합니다.

    sc.textFile ( "hdfs : // ...")을 사용하려면 "nn1home : 8020 / .."과 같이 전체 경로 (절대 경로)를 지정해야합니다.

    간단하게 만들려면 sc.textFile ( "hdfs : /input/war-and-peace.txt")을 사용하십시오.

    그건 단지 하나 /

  3. ==============================

    3.이것은 작동 할 것이다 :

    이것은 작동 할 것이다 :

    val textFile = sc.textFile("hdfs://localhost:9000/user/input.txt")
    

    여기서 hadoop core-site.xml 설정 파일의 fs.defaultFS 매개 변수 값에서 localhost : 9000을 가져올 수 있습니다.

  4. ==============================

    4.적절한 URL 문자열을 전달하지 않습니다.

    적절한 URL 문자열을 전달하지 않습니다.

    마지막으로 URL은 다음과 같아야합니다.

    hdfs://localhost:54310/input/war-and-peace.txt
    
  5. ==============================

    5.CDH5도 사용하고 있습니다. 나에게 완전한 경로 i, e "hdfs : // nn1home : 8020"은 이상한 이유로 작동하지 않는다. 대부분의 예제는 이와 같은 경로를 보여줍니다.

    CDH5도 사용하고 있습니다. 나에게 완전한 경로 i, e "hdfs : // nn1home : 8020"은 이상한 이유로 작동하지 않는다. 대부분의 예제는 이와 같은 경로를 보여줍니다.

    나는 다음과 같은 명령을 사용했다.

    val textFile=sc.textFile("hdfs:/input1/Card_History2016_3rdFloor.csv")
    

    위의 명령 중 o / p :

    textFile: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[1] at textFile at <console>:22
    
    textFile.count
    
    res1: Long = 58973  
    

    그리고 이것은 나를 위해 잘 작동합니다.

  6. ==============================

    6.이것은 나를 위해 일했다.

    이것은 나를 위해 일했다.

       logFile = "hdfs://localhost:9000/sampledata/sample.txt"
    
  7. ==============================

    7.spark-env.sh에 설정된 HADOOP_HOME을 사용하여 spark를 시작한 경우 spark는 hdfs 구성 파일을 찾을 위치를 알 수 있습니다.

    spark-env.sh에 설정된 HADOOP_HOME을 사용하여 spark를 시작한 경우 spark는 hdfs 구성 파일을 찾을 위치를 알 수 있습니다.

    이 경우 spark는 이미 namenode / datanode의 위치를 ​​알고 있으며 아래에서만 hdfs 파일에 액세스 할 수 있습니다.

    sc.textFie("/myhdfsdirectory/myfiletoprocess.txt")
    

    아래와 같이 myhdfs 디렉토리를 만들 수 있습니다.

    hdfs dfs -mkdir /myhdfsdirectory
    

    로컬 파일 시스템에서 다음 명령을 사용하여 myfiletoprocess.txt를 hdfs 디렉토리로 이동할 수 있습니다.

    hdfs dfs -copyFromLocal mylocalfile /myhdfsdirectory/myfiletoprocess.txt
    
  8. ==============================

    8.

     val conf = new SparkConf().setMaster("local[*]").setAppName("HDFSFileReader")
    conf.set("fs.defaultFS", "hdfs://hostname:9000")
    val sc = new SparkContext(conf)
    val data = sc.textFile("hdfs://hostname:9000/hdfspath/")
    data.saveAsTextFile("C:\\dummy\")
    

    위의 코드는 디렉토리에서 모든 hdfs 파일을 읽고 c : // dummy 폴더에 로컬로 저장합니다.

  9. ==============================

    9.파일 경로 또는 URL 및 hdfs 포트의 문제 일 수 있습니다.

    파일 경로 또는 URL 및 hdfs 포트의 문제 일 수 있습니다.

    해결책: 먼저 위치 $ HADOOP_HOME / etc / hadoop에서 core-site.xml 파일을 열고 속성 fs.defaultFS의 값을 확인하십시오. 값이 hdfs : // localhost : 9000이고 hdfs의 파일 위치가 /home/usr/abc/fileName.txt라고 가정 해 봅시다. 그런 다음 파일 URL은 다음과 같습니다. hdfs : // localhost : 9000 / home / usr / abc / fileName.txt 그리고 다음 명령을 사용하여 hdfs에서 파일을 읽습니다.

    var result= scontext.textFile("hdfs://localhost:9000/home/usr/abc/fileName.txt", 2)
    
  10. from https://stackoverflow.com/questions/27478096/cannot-read-a-file-from-hdfs-using-spark by cc-by-sa and MIT license