복붙노트

[HADOOP] Hadoop Pseudo-Distributed Operation 오류 : 프로토콜 메시지 태그의 와이어 유형이 잘못되었습니다.

HADOOP

Hadoop Pseudo-Distributed Operation 오류 : 프로토콜 메시지 태그의 와이어 유형이 잘못되었습니다.

Hadoop 2.6.0 단일 노드 클러스터를 설정 중입니다. 나는 hadoop-common / SingleCluster 문서를 따른다. 나는 우분투 14.04에서 일한다. 지금까지 필자는 독립 실행 형 작업을 성공적으로 실행했습니다.

가상 분산 작업을 수행하려고 할 때 오류가 발생합니다. 나는 NameNode 데몬과 DataNode 데몬을 시작할 수 있었다. jps oputut :

martakarass@marta-komputer:/usr/local/hadoop$ jps
4963 SecondaryNameNode
4785 DataNode
8400 Jps
martakarass@marta-komputer:/usr/local/hadoop$ 

그러나 MapReduce 작업을 실행하는 데 필요한 HDFS 디렉토리를 만들려고 할 때 다음과 같은 오류가 발생합니다.

martakarass@marta-komputer:/usr/local/hadoop$ bin/hdfs dfs -mkdir /user
15/05/01 20:36:00 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
mkdir: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type.; Host Details : local host is: "marta-komputer/127.0.0.1"; destination host is: "localhost":9000; 
martakarass@marta-komputer:/usr/local/hadoop$ 

(나는 내가 WARN을 무시할 수 있다고 믿는다. util.NativeCodeLoader : 당신의 플랫폼을위한 native-hadoop 라이브러리를로드 할 수 없다 ...이 시점에서 경고.)

Hadoop 설정 파일의 경우, 문서에 언급 된 파일 만 변경했습니다. 나는 가지고있다:

etc / hadoop / core-site.xml :

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

etc / hadoop / hdfs-site.xml :

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

나는 localhost에 연결할 수 있었다 :

martakarass@marta-komputer:~$ ssh localhost
martakarass@localhost's password: 
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-45-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Fri May  1 20:28:58 2015 from localhost

나는 파일 시스템을 포맷했다.

martakarass@marta-komputer:/usr/local/hadoop$  bin/hdfs namenode -format
15/05/01 20:30:21 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = marta-komputer/127.0.0.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 2.6.0
(...)
15/05/01 20:30:24 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at marta-komputer/127.0.0.1
************************************************************/

/ etc / hosts :

127.0.0.1       localhost
127.0.0.1       marta-komputer

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

etc / hostname :

marta-komputer

해결법

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

    1.이것은 정확히 동일한 문제에 직면했을 때 우분투에서 수행 한 일련의 단계입니다. 그러나 2.7.1에서는 단계가 이전 버전과 미래 버전에서 크게 다르지 않아야합니다 (믿을 것입니다).

    이것은 정확히 동일한 문제에 직면했을 때 우분투에서 수행 한 일련의 단계입니다. 그러나 2.7.1에서는 단계가 이전 버전과 미래 버전에서 크게 다르지 않아야합니다 (믿을 것입니다).

        127.0.0.1    localhost   <computer-name>
        # 127.0.1.1    <computer-name>
        <ip-address>    <computer-name>
    
        # Rest of file with no changes
    

    이는 실제로이 구성을 사용하는지 확인하는 좋은 기회입니다. .xml 파일이있는 폴더에서 hadoop_env.sh 스크립트의 내용을보고 $ HADOOP_CONF_DIR이 올바른 디렉토리를 가리키고 있는지 확인하십시오.

    NameNode는 표준 배포판의 포트 50070과 8020을 바인드하고 DataNode는 포트 50010, 50020, 50075와 43758을 바인드합니다. 어떤 이유로 든 다른 서비스가 사용하지 않도록 sudo lsof -i를 실행하십시오.

    이 시점에서 hadoop.tmp.dir 값을 변경했다면 hdfs namenode -format으로 NameNode를 다시 포맷해야합니다. 사용중인 tmp 디렉토리에 이미 존재하는 임시 파일을 제거하지 않으면 (기본 / tmp /) :

    / sbin /에서 start-dfs.sh 스크립트와 start-yarn.sh를 사용하여 이름과 데이터 노드를 시작하고 jps의 출력을 평가합니다.

        ./start-dfs.sh   
        ./start-yarn.sh
    

    이 시점에서 NameNode, DataNode, NodeManager 및 ResourceManager가 모두 실행중인 경우 이동하도록 설정해야합니다!

    이 중 하나라도 시작되지 않은 경우 로그 출력을 공유하여 재평가하십시오.

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

    2./ etc / hosts에서 127.0.0.1 localhost를 제거하십시오. core-site.xml을 다음과 같이 변경하십시오.

    / etc / hosts에서 127.0.0.1 localhost를 제거하십시오. core-site.xml을 다음과 같이 변경하십시오.

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://marta-komputer:9000</value>
        </property>
    </configuration>
    

    WARN 유틸리티를 무시할 수 있습니다 .NativeCodeLoader : 플랫폼에 native-hadoop 라이브러리를로드 할 수 없습니다 ... 경고

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

    3./ etc / hosts에서 다음과 같이 변경하십시오.

    / etc / hosts에서 다음과 같이 변경하십시오.

    1. 변경 :

    127.0.0.1    localhost
    

    127.0.0.1    localhost    marta-komputer
    

    2. 삭제 :

    127.0.0.1    marta-komputer
    

    3. 추가 :

    your-system-ip    marta-komputer
    

    시스템 IP를 찾으려면 터미널에 다음을 입력하십시오.

    ifconfig
    

    (여기서 IP 주소를 찾으십시오) 또는 다음을 입력하십시오 :

    ifdata -pa eth0
    

    최종 / etc / hosts 파일은 다음과 같아야합니다.

    127.0.0.1       localhost       marta-komputer
    your-system-ip       marta-komputer
    
    # The following lines are desirable for IPv6 capable hosts
    ::1     ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    

    hdfs-site.xml 변경 :

    1. 변경 :

    hdfs://localhost:9000
    

    hdfs://marta-komputer:9000
    

    이제, hadoop 프로세스를 중지하고 시작하십시오.

    jps 명령은 다음 프로세스를 나열해야합니다.

    Namenode
    Datanode
    TaskTracker
    SecondaryNameNode
    

    이러한 프로세스를 모두 나열하지 않으면 해당 로그에서 오류를 확인하십시오.

    최신 정보:

    업데이트 II :

    sudo mkdir -p / usr / local / hdfs / purpose

    sudo mkdir -p / usr / local / hdfs / datanode

    sudo chown -R hduser : hadoop / usr / local / hdfs / purpose

    sudo chown -R hduser : hadoop / usr / local / hdfs / datanode

    / usr / local / hdfs / datanode 값을 가진 dfs.datanode.data.dir

    / usr / local / hdfs / namenode 값을 가진 dfs.namenode.data.dir

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

    4.한 번이 오류가있어 내가 hodfs 자바 코드에서 파일을 업로드 할 때, 문제는 내가 hadoop 2 설치에 연결하는 항아리 1 항아리를 사용하고 있었는지, 당신의 경우에는 문제가 뭐니 뭐니해도 당신이 hadoop 1 eariler를 설정했다면 무언가가 엉망이되어야합니다.

    한 번이 오류가있어 내가 hodfs 자바 코드에서 파일을 업로드 할 때, 문제는 내가 hadoop 2 설치에 연결하는 항아리 1 항아리를 사용하고 있었는지, 당신의 경우에는 문제가 뭐니 뭐니해도 당신이 hadoop 1 eariler를 설정했다면 무언가가 엉망이되어야합니다.

  5. from https://stackoverflow.com/questions/29992952/hadoop-pseudo-distributed-operation-error-protocol-message-tag-had-invalid-wire by cc-by-sa and MIT license