하둡을 설치하는 방법?


26

Ubuntu 12.04 버전에서 Hadoop을 설치하려고합니다. http://michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/ 의 지침에 따라 java-6-openjdkUbuntu 소프트웨어 센터에서 설치 했습니다. 에 설정 java_home했습니다 .bashrc. java_home하둡 에서도 설정 됩니다 conf/env.sh. 네임 노드를 포맷하는 동안 다음 오류가 발생합니다.

usr/lib/jvm/java-6-openjdk/bin/java no such file or directory.

고맙습니다. 그러나 64 비트 OS입니다.


1
사용자가 솔루션을 찾았을 때 현상금이 발생하는 이유는 무엇입니까? 어떤 대답이 예상됩니까?
green

1
@ green7 의도는 실제로 수락 된 것으로 표시되고 매우 상세하며 좋아하는 답변을 찾는 것입니다. 하나가없는 것 같아서, 호르헤에게 현상금을 추가하는 것을 이해할 수 있습니다.
토마스 워드

@TheLordofTime 질문이 너무 현지화되어 있으므로 자세한 답변에는 최대 5 줄이 포함됩니다. 그리고 Hadoop에 대한 설치 지침이 포함 된 답변이 필요한 경우 질문에 언급 된 링크가 훌륭하게 설명하므로 중복됩니다. 또한 가장 많은 표를 얻은 답변이 본인이 직접 게시 한 것이므로 다른 답변을 수락 할 가능성은 거의 없습니다.
green

@ green7 질문이 너무 현지화 된 경우 투표하여 닫으십시오.
토마스 워드

답변:


39

내가 12.04를 가질 때 따라온 가이드는 다음과 같습니다.

필자가 가장 먼저 추천 한 것은 OpenJDK 7이 아닌 Oracle Java 7이기 때문에 MyLearning에 실제로 반대했지만 OpenJDK 7에 문제가있어서 Oracle과 함께 가야했습니다.

이 안내서는 대부분 직설적이며 다음과 같습니다.

  1. 자바 설치

    sudo add-apt-repository ppa:webupd8team/java  
    sudo apt-get update && sudo apt-get upgrade  
    sudo apt-get install oracle-java7-installer  
    
  2. 하둡 사용자 생성

    sudo addgroup hadoop  
    sudo adduser --ingroup hadoop hduser
    

    hduser는 원하는 Hadoop 사용자입니다.

  3. SSH 구성

    su - hduser   
    ssh-keygen -t rsa -P ""
    cat .ssh/id_rsa.pub >> .ssh/authorized_keys
    

    SSH가 제대로 설치되었는지 확인하려면 hduser다음 명령을 사용하여 새 터미널을 열고 ssh 세션을 만들 수 있습니다 .

    ssh localhost
    

    localhost가 연결되지 않으면 ssh를 다시 설치하십시오 ( hduser아래 단계와 같이 sudo 에 추가해야 할 수도 있습니다 )

    sudo apt-get install openssh-server
    
  4. Sudoers 편집

    sudo visudo
    
  5. 줄 끝에 hduser를 sudoers에 추가하십시오.

    hduser ALL=(ALL:ALL) ALL
    

    CTRL+ 를 저장하려면을 X입력 Y하고ENTER

  6. IPv6 비활성화

    sudo gedit /etc/sysctl.conf
    

    또는

    sudo nano /etc/sysctl.conf
    

    파일 끝에 다음 줄을 복사하십시오.

    #disable ipv6  
    net.ipv6.conf.all.disable_ipv6 = 1  
    net.ipv6.conf.default.disable_ipv6 = 1   
    net.ipv6.conf.lo.disable_ipv6 = 1  
    

    당신에게 말하는 데 문제가 있다면, 당신은 권한이 없으며, 루트 계정으로 이전 명령을 실행하십시오 (sudo가 충분하지 않은 경우입니다.

  7. 이제 재부팅하십시오.

    당신은 또한 할 수 sudo sysctl -p있지만 오히려 재부팅합니다.

    재부팅 한 후 IPv6이 꺼져 있는지 확인하십시오.

    cat /proc/sys/net/ipv6/conf/all/disable_ipv6
    

    1 이어야합니다 . 그것이 말하는 경우 0을 , 당신이 뭔가를 놓쳤다.

  8. 하둡 설치

    이 작업을 수행하는 몇 가지 방법이 있습니다. 가이드에서 제안하는 방법은 Apache Hadoop 사이트 에서 다운로드 하여 hduser홈 폴더 에있는 파일의 압축을 푸는 것 입니다. 추출 된 폴더의 이름을로 바꿉니다 hadoop.

    다른 방법은 12.04에 대해 테스트 된 PPA를 사용하는 것입니다.

    sudo add-apt-repository ppa:hadoop-ubuntu/stable  
    sudo apt-get update && sudo apt-get upgrade  
    sudo apt-get install hadoop  
    

    참고 : PPA는 일부에 대해서는 작동 할 수 있지만 그렇지 않을 수도 있습니다. 내가 시도한 것은 PPA에 대해 몰랐기 때문에 공식 사이트에서 다운로드하는 것입니다.

  9. 최신 정보 $HOME/.bashrc

    .bashrcfor hduser(및 Hadoop을 관리해야하는 모든 사용자) 를 업데이트 해야합니다. 열려면 .bashrc파일, 루트로 열어야합니다 :

    sudo gedit /home/hduser/.bashrc  
    

    또는

    sudo nano /home/hduser/.bashrc  
    

    그런 다음 .bashrc파일 끝에 다음 구성을 추가 합니다

    # Set Hadoop-related environment variables   
    export HADOOP_HOME=/home/hduser/hadoop  
    
    # Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on)`
    export JAVA_HOME=/usr/lib/jvm/java-7-oracle  
    

    이제 OpenJDK7이 있으면 다음과 같이 보일 것입니다.

    export JAVA_HOME=/usr/lib/java-7-openjdk-amd64  
    

    여기서주의해야 할 것은 Java가 AMD64 버전으로 상주하는 폴더입니다. 위의 방법으로 문제가 해결되지 않으면 해당 특정 폴더를 찾거나 다음과 함께 사용할 Java를 설정하십시오.

    sudo update-alternatives --config java  
    

    이제 유용한 별명을 찾으십시오.

    # Some convenient aliases and functions for running Hadoop-related commands  
    unalias fs &> /dev/null   
    alias fs="hadoop fs"    
    unalias hls &> /dev/null  
    alias hls="fs -ls"  
    
    # Add Hadoop bin/ directory to PATH  
    export PATH=$PATH:$HADOOP_HOME/bin  
    
  10. 하둡 구성

    다음은 올바른 구성을 수행하는 데 사용할 수있는 구성 파일입니다. Hadoop과 함께 사용할 일부 파일은 다음과 같습니다 ( 이 사이트의 추가 정보 ).

    start-dfs.sh-Hadoop DFS 데몬, 이름 노드 및 데이터 노드를 시작합니다. start-mapred.sh 전에 이것을 사용하십시오

    stop-dfs.sh -Hadoop DFS 데몬을 중지합니다.

    start-mapred.sh -Hadoop Map / Reduce 데몬, 작업 추적기 및 작업 추적기를 시작합니다.

    stop-mapred.sh -Hadoop Map / Reduce 데몬을 중지합니다.

    start-all.sh-모든 Hadoop 데몬, 이름 노드, 데이터 노드, 작업 추적기 및 작업 추적기를 시작합니다. 더 이상 사용되지 않습니다. start-dfs.sh를 사용한 다음 start-mapred.sh를 사용하십시오.

    stop-all.sh-모든 Hadoop 데몬을 중지합니다. 더 이상 사용되지 않습니다. stop-mapred.sh를 사용한 다음 stop-dfs.sh를 사용하십시오.

    그러나 사용하기 전에 /conf폴더의 여러 파일을 수정해야 합니다.

    hadoop-env.sh

    파일을 찾으십시오 hadoop-env.sh.이 파일에서 JAVA_HOME 변수 만 업데이트하면됩니다.

    sudo gedit /home/hduser/hadoop/conf/hadoop-env.sh
    

    또는

    sudo nano /home/hduser/hadoop/conf/hadoop-env.sh
    

    또는 최신 버전에서는

    sudo nano /etc/hadoop/conf.empty/hadoop-env.sh
    

    또는

    sudo nano /etc/hadoop/hadoop-env.sh
    

    그런 다음 다음 줄을 변경하십시오.

    # export JAVA_HOME=/usr/lib/j2sdk1.5-sun
    

    export JAVA_HOME=/usr/lib/jvm/java-7-oracle
    

    참고 : Error: JAVA_HOME is not set서비스를 시작하는 동안 오류가 발생하면 이전 행의 주석을 해제하는 것을 잊었습니다 (# 만 제거).

    core-site.xml

    이제 Hadoop 프레임 워크에 대한 임시 디렉토리를 작성해야합니다. 테스트 또는 빠른 프로토 타입 (예 : 개인 테스트 용 간단한 hadoop 프로그램 개발)을 위해이 환경이 필요한 경우 /home/hduser/디렉토리 아래에이 폴더를 작성하는 것이 좋습니다 . 그렇지 않으면 공유 폴더 아래의 공유 위치에이 폴더를 작성해야합니다 ( / usr / local ...)과 같은 보안 문제가 발생할 수 있습니다. 그러나 java.io.IOException과 같은 보안으로 인해 발생할 수있는 예외를 극복하기 위해 hduser 공간 아래에 tmp 폴더를 만들었습니다.

    이 폴더를 만들려면 다음 명령을 입력하십시오.

    sudo mkdir /home/hduser/tmp   
    

    다른 관리자 (예 : hadoop 그룹의 hduser2)를 만들려면 다음 명령을 사용하여이 폴더에 대한 읽기 및 쓰기 권한을 부여해야합니다.

    sudo chown hduser:hadoop /home/hduser/tmp  
    sudo chmod 755 /home/hduser/tmp  
    

    이제 hadoop/conf/core-site.xmlhadoop.tmp.dir 항목을 편집하기 위해 열 수 있습니다 . 텍스트 편집기를 사용하여 core-site.xml을 열 수 있습니다.

    sudo gedit /home/hduser/etc/hadoop/core-site.xml  
    

    또는

    nano /home/hduser/etc/hadoop/core-site.xml
    

    그런 다음 xml 요소 사이에<configure> 다음 구성을 추가하십시오 .

    <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hduser/tmp</value>
      <description>A base for other temporary directories.</description>
    </property>
    
    <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:54310</value>
      <description>The name of the default file system.  A URI whose
      scheme and authority determine the FileSystem implementation.  The
      uri's scheme determines the config property (fs.SCHEME.impl) naming
      the FileSystem implementation class.  The uri's authority is used to
      determine the host, port, etc. for a filesystem.</description>
    </property>
    

    이제 편집 mapred-site.xml

    <property>
      <name>mapred.job.tracker</name>
      <value>localhost:54311</value>
      <description>The host and port that the MapReduce job tracker runs
      at.  If "local", then jobs are run in-process as a single map
      and reduce task.
      </description>
    </property>
    

    이제 편집 hdfs-site.xml

    <property>
      <name>dfs.replication</name>
      <value>1</value>
      <description>Default block replication.
      The actual number of replications can be specified when the file is created.
      The default is used if replication is not specified in create time.
      </description>
    </property> 
    
  11. 포맷팅 노드

    이제 노드 작업을 시작할 수 있습니다. 첫 번째 형식 :

    ~/hduser/hadoop/bin/hadoop namenode -format
    

    또는

    ./home/hduser/hadoop/bin/hadoop namenode -format
    

    HDFS에서 네임 노드를 포맷해야합니다. 시스템이 실행 중일 때는이 단계를 수행하지 않아야합니다. 일반적으로 설치 처음에 한 번 수행됩니다.

  12. 하둡 클러스터 시작

    hadoop / bin 디렉토리로 이동하여 ./start-all.sh스크립트를 실행해야합니다 .

    cd ~/hduser/hadoop/bin/  
    start-all.sh  
    

    가이드에 표시된 버전과 다른 버전이있는 경우 (PPA 또는 최신 버전으로이 작업을 수행 할 가능성이 가장 높음) 다음과 같이 시도하십시오.

    cd ~/hduser/hadoop/bin/   
    start-dfs.sh  
    start-mapred.sh   
    

    컴퓨터에서 네임 노드, 데이터 노드, 작업 추적기 및 작업 추적기가 시작됩니다.

  13. 하둡이 실행 중인지 확인

    라는 멋진 도구가 jps있습니다. 이를 사용하여 모든 서비스가 작동하는지 확인할 수 있습니다. hadoop bin 폴더에서 다음을 입력하십시오.

    jps
    

    모든 Hadoop 관련 프로세스가 표시되어야합니다.

    참고 :이 작업은 6 개월 전에 수행되었으므로 작동하지 않는 부분이 있으면 알려주십시오.

Juju를 이용한 하둡 (Hadoop을위한 Juju Charm)

매력적인 하둡 에서 가져온

다음이 이미 설정되어 있다고 가정합니다.

  • Juju가 이미 설정된 서버가 있습니다
  • 로컬 또는 원격으로 서버에 액세스 할 수 있습니다
  • Juju를 구성하고 참 추가를 시작할 준비가되었습니다.
  • 12.04를 사용하고 있습니다 (12.04 로이 모든 것을 테스트했기 때문입니다)
  • ~/.juju/environments.yamlPPA 오리진을 포함하여 사용할 서버에 관한 정보로 이미 구성 했습니다.

이제 다음 단계에 따라 Hadoop 서비스를 실행하십시오.

  1. 하둡 환경 부트 스트랩

    juju bootstrap
    

    완료 될 때까지 기다렸다가 올바르게 연결되어 있는지 확인하십시오.

    juju status
    
  2. 하둡 배포 (마스터 및 슬레이브)

    juju deploy --constraints="instance-type=m1.large" hadoop hadoop-master   
    
    juju deploy --constraints="instance-type=m1.medium" -n 5 hadoop hadoop-slave
    
  3. 관계 만들기

    juju add-relation hadoop-master:namenode hadoop-slave:datanode  
    
    juju add-relation hadoop-master:jobtracker hadoop-slave:tasktracker
    
  4. 하둡 노출 (이미 관계를 배포하고 생성 했으므로 서비스가 실행 중이어야 함)

    juju expose hadoop-master
    

    그리고 상태가 올바르게 작동하는지 확인하십시오.

    juju status hadoop-master
    

지금까지 실행중인 Hadoop이 있습니다. 제공된 링크 또는 Hadoop 의 공식 Juju Charm 에서 찾을 수있는 더 많은 작업이 있습니다.

최신 JuJu Charms (설정, 단계별 가이드 등)를 방문하려면 다음을 방문하십시오 : JuJu Charms 및 자체 JuJu 환경 만들기 및 각 파일 설정 방법 및 각 서비스 연결 방법 확인.



hduser (ALL)=(ALL:ALL) ALL 구문 오류 ... 발생
tutuca

으로 시도 hduser ALL=(ALL:ALL) ALL하고 첫 번째 괄호 쌍을 제거하십시오
ssoto

1
@ssoto가 방금 확인했습니다. 최신 버전에서 변경되었을 수도 있습니다.
Luis Alvarado

1
.bachrcJohann Sebastian 이들을 때까지 기다리십시오 . 오, 잠깐만 요 .. 그는 귀 먹었 기 때문에 ... :-D
David Foerster

6

경로를 JAVA_HOME로 설정하여 Hadoop을 성공적으로 설치 했습니다 usr/lib/jvm/java-6-openjdk-amd64.


좀 더 설명해 주시겠습니까?
Panther

3

@Luis Alvarado의 답변 에서 파생 된 Ubuntu 14.04 및 Hadoop 2.5.1의 내 버전은 다음과 같습니다.

간단히

  1. 자바 설치
  2. 하둡을 위한 임원 사용자 준비hduser
  3. hduser지금부터 전환
  4. hduser패스 프레이즈없이 SSH를 통해 원격으로 허용
  5. IPv6 비활성화
  6. Hadoop 패키지 다운로드 및 구성
  7. 시스템 경로 $ HADOOP_HOME 및 $ JAVA_HOME을 준비하십시오.
  8. 구성 하둡 서비스
  9. 하둡 서비스 시작

끝난. 행운을 빕니다!

세부 단계

자바 설치

다운로드 및 설치

$ sudo add-apt-repository ppa:webupd8team/java    
$ sudo apt-get update && sudo apt-get upgrade    
$ sudo apt-get install oracle-java7-installer

Java7이 설치되어 있는지 확인하십시오

$ which java
$ ls -l /usr/bin/java
$ ls -l /etc/alternatives/java

우리는 java지적해야/usr/lib/jvm/java-7-oracle/jre/bin/java

하둡을 위한 임원 사용자 준비hduser

hduser그룹에서 사용자 생성hadoop

$ sudo addgroup hadoop  
$ sudo adduser --ingroup hadoop hduser

sudo 권한을 부여 hduser하십시오

sudo 편집

$ sudo visudo

이 줄 끝에 추가

hduser ALL=(ALL:ALL) ALL

hduser지금부터 전환

$ su - hduser

hduser패스 프레이즈없이 SSH를 통해 원격으로 허용

openssh 설치

$ sudo apt-get install openssh-server

SSH 연결을위한 RSA 공개 / 개인 키 생성 암호문이 비어 있습니다parameter -P ""

$ ssh-keygen -t rsa -P ""
$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys

hduser비밀번호없이 로컬로 원격으로 ssh 할 수 있는지 확인하십시오

$ ssh localhost

IPv6 비활성화

구성 파일 편집

$ sudo nano /etc/sysctl.conf

끝까지 복사

#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1   
net.ipv6.conf.lo.disable_ipv6 = 1

재부팅 또는 호출로 IPv6이 꺼져 있는지 확인

$ sudo sysctl -p 

그런 다음 전화

$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6

OK라는 의미의 1이라고 말해야합니다 ^^

Hadoop 패키지 다운로드 및 구성

Apache Hadoop 사이트 에서 Hadoop 2.5.1 패키지 다운로드

이 패키지의 직접 URL은이 링크입니다

http://www.eu.apache.org/dist/hadoop/core/hadoop-2.5.1/hadoop-2.5.1.tar.gz

hduser홈 폴더로 다운로드하여 압축을 풀고 이름을 바꿉니다.hadoop

$ wget http://www.eu.apache.org/dist/hadoop/core/hadoop-2.5.1/hadoop-2.5.1.tar.gz
$ tar -xvzf hadoop-2.5.1.tar.gz
$ mv hadoop-2.5.1 hadoop

우리가 하둡을 hduser집에 저장했는지 확인하십시오

$ ls /home/hduser/hadoop

시스템 경로 $ HADOOP_HOME 및 $ JAVA_HOME을 준비하십시오.

hduser의 .bashrc 파일 편집

$ nano .bashrc

에 대한 최종 값을 넣어 $HADOOP_HOME$JAVA_HOME

# Set Hadoop-related environment variables   
export HADOOP_HOME=/home/hduser/hadoop  

# Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on)
export JAVA_HOME=/usr/lib/jvm/java-7-oracle 

binary시스템에 Hadoop 폴더 추가$PATH

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

새 터미널을 열고로 로그인 hduser하여 사용 가능한 명령이있는 $ HADOOP_HOME이 있는지 확인하십시오.

$ echo $HADOOP_HOME
$ which start-all.sh
$ which start-dfs.sh
$ which start-yarn.sh

우리는 그 이름들의 전체 경로를보아야합니다.

구성 하둡 서비스

Hadoop의 각 구성 요소는 XML 파일을 사용하여 구성됩니다.

  • 공통 속성은 core-site.xml에 있습니다.

  • hdfs-site.xml에 있는 HDFS 속성

  • MapReduce 속성은 mapred-site.xml에 있습니다.

여기에 이미지 설명을 입력하십시오

이 파일들은 모두 $ HADOOP_HOME / etc / hadoop 폴더에 있습니다.

hadoop-env.sh라인을 편집하여 JAVA_HOME을 다시 정의하십시오.

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

core-site.xml 에서 하둡 temp folderfile system이름 정의

<configuration>
  ...
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hduser/tmp</value>
    <description>A base for other temporary directories.</description>
  </property>

  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:54310</value>
    <description>The name of the default file system.  A URI whose
    scheme and authority determine the FileSystem implementation.  The
    uri's scheme determines the config property (fs.SCHEME.impl) naming
    the FileSystem implementation class.  The uri's authority is used to
    determine the host, port, etc. for a filesystem.</description>
  </property>
  ...
</configuration>

우리는 이것을 다음 temp folder과 같이 구성 해야 합니다./home/hduser/tmp

$ cd /home/hduser
$ mkdir tmp
$ chown hduser:hadoop tmp
$ chmod 755 tmp

hdfs-site.xml 에서 file system의 정의block replication

<configuration>
  ...
  <property>
    <name>dfs.replication</name>
    <value>1</value>
    <description>Default block replication.
    The actual number of replications can be specified when the file is created.
    The default is used if replication is not specified in create time.
    </description>
  </property>
  ...
</configuration>

mapred-site.xmlmap-reduce job 에서 정의

<configuration>
  ...
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:54311</value>
    <description>The host and port that the MapReduce job tracker runs
    at.  If "local", then jobs are run in-process as a single map
    and reduce task.
    </description>
  </property>
  ...
</configuration>

체재 name node

$ hdfs namenode -format

하둡 서비스 시작

요구

$ start-dfs.sh && start-yarn.sh

이 두 명령은 시스템 $ PATH에 추가 한 $ HADOOP_HOME / sbin 에 있습니다.

하둡 서비스가 올바르게 시작되었는지 확인

$ jps

우리는보아야한다

여기에 이미지 설명을 입력하십시오


1
따라야 할 아주 좋은 가이드. 사소한 실수가 있습니다 : mapred-site.xml처음에는 존재하지 않습니다. cp mapred-site.xml.template mapred-site.xml
Raptor

1

설치 할 수 있으려면 sun-javaapt-get명령, 당신은라는 파일에 한 줄을 추가해야합니다 sources.list. 이 파일은에서 찾을 수 있습니다 /etc/apt/sources.list.

이 명령을 사용하여 파일을여십시오.

sudo nano /etc/apt/sources.list

그런 다음 해당 파일의 맨 아래에서 아래 행을 복사 / 붙여 넣기하십시오.

deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse

이제 Ctrl+ X를 눌러 종료하고 y저장하십시오.


이제 다음 명령을 입력하십시오 :

sudo apt-get update 

그리고 완료되면 다음 명령을 성공적으로 실행할 수 있습니다.

sudo apt-get install sun-java6-jdk

0

최신 튜토리얼 (차이는 확실하지 않음)은 hadoop screencasts 비디오 튜토리얼을 참조하십시오. 아래에 설치할 비디오와 실제 명령을 제공합니다. 또한 당신이 작가에게 이메일을 보내면 그는 당신이 무엇인가에 갇 히면 응답하고 기꺼이 도와 드리겠습니다.

이 지침은 @Luis가 답변 한 지침과 거의 유사합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.