1. 程式人生 > >Hadoop叢集安裝的簡易操作

Hadoop叢集安裝的簡易操作

基於Hadoop分散式叢集的搭建

對於Hadoop叢集的搭建,一直處於摸索狀態,但這個在資料探勘中確實相當的重要,所以總結如下:

ssh免密登入

  1. 安裝ssh客戶端
$ sudo apt-get install openssh-client

安裝完客戶端後,它攜帶了一些其他的SSH工具,比如ssh-keygen用於生成公鑰/私鑰對,scp用於通過SSH遠端複製檔案,sftp用於實現安全FTP傳輸。安裝完成後,馬上可以在伺服器上進行測試。

ssh localhost

在這裡插入圖片描述 此時一般會沒有什麼反應會顯示出ssh: Could not resolve hostname locasthost: Name or service not known 接著輸入

ssh-keygen -t rsa

會出現 點選三次Enter後如上圖所示 此時輸入

cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
也有人輸入 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys(不建議)

接著就是 輸入

gedit /etc/ssh/sshd_config

輸入

#RSAAuthentication yes
#PubkeyAuthentication yes

最後一步就是(ssh伺服器下載)

sudo apt-get install openssh-server
ssh localhost

到此就完成了如圖單機模式完成

** hadoop安裝**

2.基於Hadoop的安裝過程

(1)Hadoop的下載 由於我用的是校園網下載,對於Hadoop的下載可能會比較慢,但此處還是要分享一些下載的網站(會很慢)

https://archive.apache.org/dist/hadoop/common/hadoop-3.0.0-alpha4/  

分享一個百度雲連結(絕對安全)

連結:https://pan.baidu.com/s/1JfhOISRnS88XPCT6pAHrzQ 
提取碼:qxrk

下載完成後進行安裝 複製到/usr/local/hadoop/目錄下 然後輸入

tar -zxvf hadoop-3.0.1.tar.gz

解壓,解壓後的目錄為/usr/local/hadoop/hadoop-3.0.1/(非常重要,必須確定安裝的位置,在後期的教科書上沒有說明位置只有操作是很難弄明白按照步驟操作還會報錯)此時輸入cd /usr/local/hadoop/hadoop-3.0.1 進入Hadoop-3.0.1資料夾下,在輸入

 ./bin/hadoop -version

正常會看到Hadoop的版本資訊(沒有也沒事) (2)在相應的目錄下建立新的目錄(特別說明一定要看好位置,不然後期報錯沒法找原因) 我們的資料夾建立在/usr/local/hadoop/目錄下(注:特別提醒,在查看了許多書和網上經驗後始終認為沒有人強調這個問題,但對於剛接觸這個東西的人而言,卻是非常重要的) 在/usr/local/hadoop/目錄下,建立tmp、hdfs/name、hdfs/data目錄,執行如下命令(並非/usr/local/hadoop/hadoop-3.0.1)

mkdir /usr/local/hadoop/tmp 
mkdir /usr/local/hadoop/hdfs 
mkdir /usr/local/hadoop/hdfs/data 
mkdir /usr/local/hadoop/hdfs/name

與此同時需要配置環境變數(包括jdk的環境變數)

gedit /etc/profile/
export JAVA_HOME=/usr/local/java/jdk1.8.0_191
export PATH=/usr/local/java/jdk1.8.0_191/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.0.1
export PATH=$PATH:$HADOOP_HOME/bin

新增如下指令行(可能會多餘但筆者從巨坑裡爬出來的,所以已成驚弓之鳥就添加了)

# set hadoop path
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.0.1
export PATH=$PATH:$HADOOP_HOME/bin

配置完成後使其生效輸入

source /etc/profile/

如果重系統後又要輸入source /etc/profile/才能執行java和Hadoop,那麼可以用如下辦法進行處理 在終端輸入

gedit /etc/bash.bashrc/

進入後在頂端重新輸入

export JAVA_HOME=/usr/local/java/jdk1.8.0_191
export PATH=/usr/local/java/jdk1.8.0_191/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.0.1
export PATH=$PATH:$HADOOP_HOME/bin

退出後再輸入source /etc/profile即可。 (3)Hadoop檔案的配置

gedit  /usr/local/hadoop/hadoop-3.0.1/etc/hadoop/hadoop-env.sh

進入後找到這個介面

後在其下面新增(#不能丟)

# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/local/java/jdk1.8.0_191

在終端輸入

gedit  /usr/local/hadoop/hadoop-3.0.1/etc/hadoop/yarn-env.sh

進入文件後看到這個位置時 輸入(#不能丟):

#export YARN_PROXYSERVER_OPTS=
#The java implementation to usr
export JAVA_HOME=/usr/local/java/jdk1.8.0_191

Ctrl+s後退出。 3.配置core-site.xml 在終端輸入

gedit  /usr/local/hadoop/hadoop-3.0.1/etc/hadoop/core-site.xml 

進入檔案後看到 輸入

<configuration>
 <property>
    <name>fs.default.name</name>
    <value>hdfs://127.0.0.1:9000</value>
    <description>HDFS的URI,檔案系統://namenode標識:埠號</description>
  </property>

  <property>
     <name>hadoop.tmp.dir</name>
     <value>/usr/local/hadoop/tmp</value>
     <description>namenode上本地的hadoop臨時資料夾</description>
  </property> 
</configuration>

說明如下: 127.0.0.1可以換成localhost(正常配置為localhost) Ctrl+s後退出 4.配置hdfs-site.xml 在終端輸入

gedit  /usr/local/hadoop/hadoop-3.0.1/etc/hadoop/hdfs-site.xml

進入檔案後會看到 輸入:

<configuration>
  <property>
     <name>dfs.name.dir</name>
     <value>/usr/local/hadoop/hdfs/name</value>
     <description>namenode上儲存hdfs名字空間元資料 </description>
   </property>
   <property>
      <name>dfs.data.dir</name>
      <value>/usr/local/hadoop/hdfs/data</value>
      <description>datanode上資料塊的物理儲存位置</description>
   </property>
   <property>
      <name>dfs.replication</name>
      <value>1</value>
      <description>副本個數,配置預設是3,應小於datanode機器數量</description>
   </property>
</configuration>

ctrl+s後退出 5.mapred-sit.xml配置 在終端輸入

gedit  /usr/local/hadoop/hadoop-3.0.1/etc/hadoop/mapred-site.xml 

會看到 輸入

<configuration>
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>
</configuration>

ctrl+s後退出 6.配置yarn-site.sml 在終端輸入

gedit  /usr/local/hadoop/hadoop-3.0.1/etc/hadoop/yarn-site.xml 

會看到 輸入

<configuration>

<!-- Site specific YARN configuration properties -->
  <property>
     <name>yarn.nodemanager.aux-services</name> 
     <value>mapreduce_shuffle</value>
   </property>

   <property> 
      <name>yarn.resourcemanager.webapp.address</name>
      <value>127.0.0.1:8099</value>
      <description>這個地址是mr管理介面的</description>
    </property>
</configuration>

說明:127.0.0.1為主機的IP,可以更改但不能隨意為自己定的分散式叢集的IP,8009為埠號一定要記住且不能為9000,別的自己設定,一旦設定就不能忘記,後面會有用的。 到此所有的檔案均已配置完畢。

3.啟動及測試

(1)格式化namenode 輸入

cd /usr/local/hadoop/hadoop-3.0.1/bin
./hdfs namenode-format

如果成功會出現“successfully formatted” 和 “Exitting with status 0”但我的沒有出現,一般不影響

(2)啟動NameNode 和 DataNode 守護程序及secondary namenodes

cd /usr/local/hadoop/hadoop-3.0.1
./sbin/start-dfs.sh

如果執行指令碼報如下錯誤,

ERROR: Attempting to launch hdfs namenode as root ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting launch. Starting datanodes ERROR: Attempting to launch hdfs datanode as root ERROR: but there is no HDFS_DATANODE_USER defined. Aborting launch. Starting secondary namenodes [localhost.localdomain] ERROR: Attempting to launch hdfs secondarynamenode as root ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting launch. 解決辦法是:

gedit  /usr/local/hadoop/hadoop-3.0.1/sbin/start-dfs.sh

第二行加入

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

即可 再輸入

gedit  /usr/local/hadoop/hadoop-3.0.1/sbin/stop-dfs.sh

輸入

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

即可 (3)啟動ResourceManager 和 NodeManager 守護程序

cd  /usr/local/hadoop/hadoop-3.0.1
./sbin/start-yarn.sh

如果啟動時報如下錯誤,

Starting resourcemanager ERROR: Attempting to launch yarn resourcemanager as root ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting launch.

解決方案(也是由於缺少使用者定義) 輸入

/usr/local/hadoop/hadoop-3.0.1/sbin/start-yarn.sh

在第二行輸入

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

再輸入

/usr/local/hadoop/hadoop-3.0.1/sbin/start-yarn.sh

在第二行輸入

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

(4)啟動Hadoop 到此基本完成 輸入

cd /usr/local/hadoop/hadoop-3.0.1/sbin/
./start-all.sh 

會看到在這裡插入圖片描述 到此基本完成 再輸入jps會看到在這裡插入圖片描述 還差最後一步,在web介面驗證 輸入

http://127.0.0.1:8099 

說明此處的127.0.0.1:8099為在hdfs中配置的IP和埠號 如果成功會看到在這裡插入圖片描述 到此全部完成。 注:在此特別引用來自https://blog.csdn.net/CoffeeAndIce/article/details/78879151?utm_source=blogxgwz0的部落格,可以參考一下