ubuntu14.04安裝hadoop2.7.1僞分佈式和錯誤解決

ubuntu14.04安裝hadoop2.7.1僞分佈式和錯誤解決
須要說明的是我下載的是源碼,經過編譯源碼並安裝
1、須要準備的軟件:
1.JDK和GCC
    設置JAVA_HOME:
        vim ~/.bashrc
        在最後增長:export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_31,保存退出。
        使設置當即生效:source ~/.bashrc
        測試JAVA_HOME是否設置成功,輸出了上面設置的路徑表示成功:
        echo $JAVA_HOME
2.安裝maven
    解壓 tar -zxvf apache-maven-3.2.5-bin.tar.gz
    配置環境變量,編輯/etc/profile或者~/.bashrc文件
    export MAVEN_HOME=/opt/maven/current/bin
    export PATH=$PATH:$MAVEN_HOME/bin
    最後要source /etc/profile
    經過mvn --version來檢查是否安裝正常
3.安裝protobuf
    解壓 tar -zxvf protobuf-2.5.0.tar.gz
    進入protobuf-2.5.0目錄,執行下面的命令
    ./configure
    make
    make check
    sudo make install
    能夠經過protoc --version來查看是否安裝正常
    若是失敗,則:
    1. 將全部的用戶須要用到的庫放到/usr/loca/lib;
    2. 經過vi在/etc/ld.so.conf.d/目錄下新建文件usr-libs.conf,內容是:/usr/local/lib
    3. #sudo ldconfig
4.安裝cmake
    解壓 tar -zxvf cmake-3.4.0.tar.gz
    進入cmake-3.4.0目錄,執行下面的命令
    ./bootstrap
    make
    sudo make install
    能夠經過cmake --version來查看是否安裝正常
5.安裝autotool
    sudo apt-get install autoconf automake libtool
6.配置ssh免密碼登陸
    安裝ssh server:
    sudo apt-get install openssh-server
    cd ~/.ssh/                         # 若沒有該目錄,請先執行一次ssh localhost
    ssh-keygen -t rsa              # 會有提示,都按回車就能夠
    cat id_rsa.pub >> authorized_keys  # 加入受權
    使用ssh localhost試試可否直接登陸

2、編譯haodoop:
1.下載源碼包hadoop-2.7.1-src.tar.gz並解壓
    tar -zxvf hadoop-2.7.1-src.tar.gz
2.進入hadoop-2.7.1-src目錄,執行
    mvn clean package -Pdist,native -DskipTests -Dtar
3. 在編譯的過程當中遇到了缺乏庫的錯誤,因此就須要先安裝缺乏的庫
    好比錯誤信息:
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin
    apt-get install libglib2.0-dev
    apt-get install libssl-dev
    若是在編譯過程當中還報相似錯,請自行經過相似方式去網上找。
    接下來就是漫長的等待,當你看到一系列的SUCCESS以後,你就成功了。
4.編譯好的hadoop-2.7.1.tar.gz在hadoop-2.7.1-src木目錄下的hadoop-dist/target/的目錄中,接下來就能夠安裝了。

5.安裝Hadoop2.7.1
    將第四步編譯好的目標文件copy到/opt/hadoop/hadoop_2_7_1_64
    命令:
    sudo cp -r hadoop-dist/target/hadoop-2.7.1 /opt/hadoop/hadoop_2_7_1_64
    而後創建軟連接
    sudo ln -s /opt/hadoop/hadoop_2_7_1_64 current
    
6.配置環境變量
        vim ~/.bashrc
    #HADOOP VARIABLES START
    export HADOOP_INSTALL=/opt/hadoop/current
    export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
    export HADOOP_COMMON_HOME=$HADOOP_INSTALL
    export HADOOP_HDFS_HOME=$HADOOP_INSTALL
    export YARN_HOME=$HADOOP_INSTALL
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib/native"
    #HADOOP VARIABLES END

    export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_31
    export JRE_HOME=${JAVA_HOME}/jre
    export MAVEN_HOME=/opt/maven/current/bin
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$HIVE_HOME/lib:$CLASSPATH
    export PATH=${PATH}:${JAVA_HOVE}/bin:$JRE_HOME/bin:$MAVEN_HOME:$HADOOP_INSTALL/bin
    使設置當即生效:source ~/.bashrc
    檢查是否安裝成功,執行命令,若是出現命令幫助表示成功:hdfs

7.配置僞分佈式

    切換至配置文件目錄:  cd /opt/hadoop/current/etc/hadoop
    配置 core-site.xml,執行命令:vim core-site.xml。將文件中的<configuration></configuration>替換爲:
        <configuration>
            <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/opt/hadoop/current/tmp</value>
                <description>Abase for other temporary directories.</description>
            </property>
            <property>
                <name>fs.defaultFS</name>
                <value>hdfs://localhost:9000</value>
            </property>
        </configuration>
    配置 hdfs-site.xml,執行命令:vim hdfs-site.xml,修改成:
        <configuration>
            <property>
                <name>dfs.replication</name>
                <value>1</value>
            </property>
            <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/opt/hadoop/current/tmp/dfs/name</value>
            </property>
            <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/current/tmp/dfs/data</value>
            </property>
        </configuration>

    關於Hadoop配置項的一點說明:
    雖然只須要配置 fs.defaultFS 和 dfs.replication 就能夠運行(官方教程如此),不過若沒有配置 hadoop.tmp.dir 參數,則默認使用的臨時目錄爲 /tmp/hadoo-hadoop,而這個目錄在重啓時有可能被系統清理掉,致使必須從新執行 format 才行。因此咱們進行了設置,同時也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,不然在接下來的步驟中可能會出錯。

    配置yarn-site.xml,執行命令:vim yarn-site.xml,修改成:
        <configuration>
          <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
          </property>
          <property>
          <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
          <value>org.apache.hadoop.mapred.ShuffleHandler</value>
          </property>
        </configuration>
    配置mapred-site.xml
        從模板文件複製一個xml,執行命令:mv mapred-site.xml.template mapred-site.xml
        執行命令:vim mapred-site.xml
        將文件修改成

        <configuration>

          <property>

          <name>mapreduce.framework.name</name>

          <value>yarn</value>

          </property>

        </configuration>

    配置完成後,執行格式化:hdfs namenode -format。倒數第五行出現Exitting with status 0 表示成功,若爲 Exitting with status 1 則是出錯。
    若是在這裏還出錯,頗有多是缺乏什麼庫致使的。
8.運行
    在運行全部服務以前請先運行命令:
    hdfs namenode -format error
    WARN namenode.NameNode: Encountered exception during format:
    java.io.IOException: Cannot create directory /usr/local/hd/dfs/name/current
    java.io.IOException: Cannot create directory /usr/local/hd/dfs/name/current
    此錯誤表示hadoop文件用戶權限不夠,須要修改:
    sudo chown coco:coco -R hadoop
    最後啓動hadoop全部的進程:
    sh sbin/start-all.sh
    查看各個進程是否正常啓動,執行:jps。若是一切正常,將看到下列結果:
    11010 SecondaryNameNode
    10596 NameNode
    11349 NodeManager
    10777 DataNode
    10442 Jps

PS:若是你在本機使用了oh-my-zsh這個命令,則有可能會遇到下面的問題
問題一:
➜  ~  source ~/.bashrc
/etc/bashrc:37: command not found: shopt
/etc/bashrc:fc:38: event not found: -a
/etc/bashrc:40: command not found: shopt
/etc/bashrc:51: command not found: shopt

由於zsh的環境變量須要配置在~/.zshrc中,再也不是~/.bashrc,因此你能夠在相同的環境變量配置複製到~/.zshrc文件中,
source ~/.zshrc文件
------------------------------------------------------
問題二:
15/11/27 10:55:34 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
沒法加載本地庫
能夠先用命令查看狀態:
hadoop checknative –a

結果發現全是false,那麼請檢查環境變量配置文件裏面的以下兩項配置,是否添加了native:
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib/native"
若是沒有請添加上,而後再運行hadoop checknative -a命令:
結果會以下:
-> % hadoop checknative -a
15/11/30 11:24:38 WARN bzip2.Bzip2Factory: Failed to load/initialize native-bzip2 library system-native, will use pure-Java version
15/11/30 11:24:38 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
Native library checking:
hadoop:  true /opt/hadoop/hadoop_2_7_1_64/lib/native/libhadoop.so.1.0.0
zlib:    true /lib/x86_64-linux-gnu/libz.so.1
snappy:  false
lz4:     true revision:99
bzip2:   false
openssl: true /usr/lib/x86_64-linux-gnu/libcrypto.so
15/11/30 11:24:38 INFO util.ExitUtil: Exiting with status 1
到這裏仍是有兩個false,其實snappy,bzip2,lz4,zlib都是壓縮庫,因此有兩個爲true,另外兩個爲false也沒有太大的影響了。
問題三:
要注意安裝的hadoop所屬的用戶和用戶組與你本機的權限問題。
能夠將其修改成本機經常使用用戶和用戶組,命令:
sudo chown coco:coco -R hadoop
問題四:
運行hadoop fs -ls時提示
ls: `.\\\': No such file or directory
此時,須要先創建目錄
hadoop fs -mkdir /user
再運行hadoop fs -ls /
-> % hadoop fs -ls /
Found 1 items
drwxr-xr-x   - coco supergroup          0 2015-11-30 10:38 /user

到此就結束了安裝所有過程。java

相關文章
相關標籤/搜索