centos6.8安裝單機hadoop2.7.2

Hadoop系列之(一):Hadoop單機部署 1. Hadoop介紹 Hadoop是一個可以對海量數據進行分佈式處理的系統架構。 Hadoop框架的核心是:HDFS和MapReduce。 HDFS分佈式文件系統爲海量的數據提供了存儲, MapReduce分佈式處理框架爲海量的數據提供了計算。 2. Hadoop安裝 2.1 創建hadoop用戶 增長hadoop用戶 a.以root身份登陸,添加」hadoop」用戶 useradd -m hadoop -s /bin/bash 密碼輸入兩次,筆者使用」hadoop」做爲密碼,比較好記憶。這樣,一個用戶名爲hadoop, 密碼也是hadoop的用戶就添加好了。 b.可爲 hadoop 用戶增長管理員權限,方便部署,避免一些對新手來講比較棘手的權限問題 vim /etc/sudoers 找到 root ALL=(ALL) ALL 這行 增長一行: hadoop ALL=(ALL) NOPASSWD:ALL 安裝java Hadoop是使用JAVA寫的,因此須要先安裝JAVA環境。 Linux安裝JDK完整步驟 一、檢查一下系統中的jdk版本 [root@localhost software]# java -version 顯示: openjdk version "1.8.0_102" OpenJDK Runtime Environment (build 1.8.0_102-b14) OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode) 二、檢測jdk安裝包 [root@localhost software]# rpm -qa | grep java 顯示: java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 python-javapackages-3.4.1-11.el7.noarch tzdata-java-2016g-2.el7.noarch javapackages-tools-3.4.1-11.el7.noarch java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 三、卸載openjdk [root@localhost software]# rpm -e --nodeps tzdata-java-2016g-2.el7.noarch [root@localhost software]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 [root@localhost software]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 [root@localhost software]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 [root@localhost software]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 或者使用 [root@localhost jvm]# yum remove *openjdk* 以後再次輸入rpm -qa | grep java 查看卸載狀況: [root@localhost software]# rpm -qa | grep java python-javapackages-3.4.1-11.el7.noarch javapackages-tools-3.4.1-11.el7.noarch 四、安裝新的jdk 首先到jdk官網上下載你想要的jdk版本,下載完成以後將須要安裝的jdk安裝包放到Linux系統指定的文件夾下,而且命令進入該文件夾下: [root@localhost software]# ll total 252664 -rw-r--r--. 1 root root 11830603 Jun 9 06:43 alibaba-rocketmq-3.2.6.tar.gz -rw-r--r--. 1 root root 43399561 Jun 9 06:42 apache-activemq-5.11.1-bin.tar.gz -rwxrw-rw-. 1 root root 185540433 Apr 21 09:06 jdk-8u131-linux-x64.tar.gz -rw-r--r--. 1 root root 1547695 Jun 9 06:44 redis-3.2.9.tar.gz -rw-r--r--. 1 root root 16402010 Jun 9 06:40 zookeeper-3.4.5.tar.gz 解壓 jdk-8u131-linux-x64.tar.gz安裝包 [root@localhost software]# mkdir -p /usr/lib/jvm [root@localhost software]# tar -zxvf jdk-8u131-linux-x64.tar.gz -C /usr/lib/jvm 五、設置環境變量 [root@localhost software]# vim /etc/profile 在最前面添加: export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_131 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH 六、執行profile文件 [root@localhost software]# source /etc/profile 這樣能夠使配置不用重啓便可當即生效。 七、檢查新安裝的jdk [root@localhost software]# java -version 顯示: java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode) 到此爲止,整個安裝過程結束。 2.2 須要ssh和rsync Linux系統通常都已經默認安裝了,若是沒有,yum安裝。 2.3 下載Hadoop 從官網下載Hadoop最新版2.7.2 # wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz 或者上傳到:/home/hadoop目錄下 將hadoop解壓到/app/下 # cd /home/hadoop/ # tar -zxvf hadoop-2.7.2.tar.gz sudo mv hadoop-2.7.2 /app/ 2.4 設置環境變量 設置JAVA的環境變量,JAVA_HOME是JDK的位置 # sudo vim /etc/profile HADOOP_HOME=/app/hadoop-2.7.2 export HADOOP_HOME export PATH=$PATH:$HADOOP_HOME/bin讓設置生效 # source /etc/profile 設置Hadoop的JAVA_HOME # cd /app/hadoop-2.7.2/ # vim etc/hadoop/hadoop-env.sh export JAVA_HOME=/app/jdk1.8.0_121 到此,Hadoop的安裝就算完成了,接下來進行部署和使用。 hadoop version 3. 單機部署 Hadoop部署方式分三種,Standalone mode、Pseudo-Distributed mode、Cluster mode,其中前兩種都是在單機部署。 3.1 standalone mode(本地單獨模式) 這種模式,僅1個節點運行1個java進程,主要用於調試。 3.1.1 在Hadoop的安裝目錄下,建立input目錄 # mkdir input 3.1.2 拷貝input文件到input目錄下 # cp etc/hadoop/*.xml input 3.1.3 執行Hadoop job # hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+' 上面的job是使用hadoop自帶的樣例,在input中統計含有dfs的字符串。 3.1.4 確認執行結果 # cat output/* 3.1.5 問題點 WARN io.ReadaheadPool: Failed readahead on ifile EBADF: Bad file descriptor 若是出現上面的警告,是由於快速讀取文件的時候,文件被關閉引發,也多是其餘bug致使,此處忽略。 3.2 pseudo-distributed mode(僞分佈模式) 這種模式是,1個節點上運行,HDFS daemon的 NameNode 和 DataNode、YARN daemon的 ResourceManger 和 NodeManager,分別啓動單獨的java進程,主要用於調試。 3.2.1 修改設定文件 # vim etc/hadoop/core-site.xml fs.defaultFS hdfs://localhost:9000 # vim etc/hadoop/hdfs-site.xml dfs.replication 1 3.2.2 設定本機的無密碼ssh登錄 # ssh-keygen -t rsa # cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 修改authorized_keys文件的權限:chmod 600 ~/.ssh/authorized_keys ssh localhost 3.2.3 執行Hadoop job MapReduce v2 叫作YARN,下面分別操做一下這兩種job 3.2.4 執行MapReduce job 3.2.4.1 格式化文件系統 # hdfs namenode -format 3.2.4.2 啓動名稱節點和數據節點後臺進程 # sbin/start-dfs.sh 在localhost啓動一個1個NameNode和1個DataNode,在0.0.0.0啓動第二個NameNode 3.2.4.3 確認 # jps 3.2.4.4 訪問NameNode的web頁面 http://localhost:50070/ 關防火牆 臨時關閉:sudo service iptables stop 永久關閉:sudo chkconfig iptables off 3.2.4.5 建立HDFS # hdfs dfs -mkdir /user # hdfs dfs -mkdir /user/test 3.2.4.6 拷貝input文件到HDFS目錄下 # hdfs dfs -put etc/hadoop /user/test/input 確認,查看 # hadoop fs -ls /user/test/input 3.2.4.7 執行Hadoop job # hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep /user/test/input output 'dfs[a-z.]+' 3.2.4.8 確認執行結果 # hdfs dfs -cat output/* 或者從HDFS拷貝到本地查看 # bin/hdfs dfs -get output output # cat output/* 3.2.4.9 中止daemon # sbin/stop-dfs.sh 3.2.5 執行YARN job MapReduce V2框架叫YARN 3.2.5.1 修改設定文件 # cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml # vi etc/hadoop/mapred-site.xml mapreduce.framework.name yarn # vi etc/hadoop/yarn-site.xml yarn.nodemanager.aux-services mapreduce_shuffle 3.2.5.2 啓動ResourceManger和NodeManager後臺進程 # sbin/start-yarn.sh 3.2.5.3 確認 # jps 3.2.5.4 訪問ResourceManger的web頁面 http://localhost:8088/ 3.2.5.5 執行hadoop job # hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep /user/test/input output 'dfs[a-z.]+' 3.2.5.6 確認執行結果 # hdfs dfs -cat output/* 執行結果和MapReduce job相同 3.2.5.7 中止daemon # sbin/stop-yarn.sh 3.2.5.8 問題點 1. 單節點測試狀況下,一樣的input,時間上YARN比MapReduce好像慢不少,查看日誌發現DataNode上GC發生頻率較高,多是測試用VM配置比較低有關。 2. 出現下面警告,是由於沒有啓動job history server java.io.IOException: java.net.ConnectException: Call From test166/10.86.255.166 to 0.0.0.0:10020 failed on connection exception: java.net.ConnectException: Connection refused; 啓動jobhistory daemon # sbin/mr-jobhistory-daemon.sh start historyserver 確認 # jps 訪問Job History Server的web頁面 http://localhost:19888/ 3. 出現下面警告,DataNode日誌中有錯誤,重啓服務後恢復 java.io.IOException: java.io.IOException: Unknown Job job_1451384977088_0005 3.3 啓動/中止 也能夠用下面的啓動/中止命令,等同於start/stop-dfs.sh + start/stop-yarn.sh # sbin/start-all.sh # sbin/stop-all.sh 3.4 日誌 日誌在Hadoop安裝路徑下的logs目錄下 四、後記 單機部署主要是爲了調試用,生產環境上通常是集羣部署,接下來會進行介紹。
相關文章
相關標籤/搜索