1. 程式人生 > >Linux虛擬機器上安裝Hadoop叢集(初學)

Linux虛擬機器上安裝Hadoop叢集(初學)

測試已成功完成安裝的版本

hbase-1.2.6-bin.tar.gz
hadoop-2.7.5.tar.gz
ubuntu-16.04.3-server-amd64.ios
jdk-8u161-linux-x64.tar.gz
zookeeper-3.4.8.tar.gz

ps:如有需要請留言

寫在前面的話

關於這篇部落格
本教程並不是自己總結而寫的,都是網站上的大牛們,一個個超詳細的總結,在這裡感謝大牛們對初學者的關照!!
這裡貼出的部落格沒有排名之分,也沒有好壞之分,而且只是冰山一角,摘出了幾篇博主認為適合初學者的而已。
關於教程模式
如果已經有初步認識,而且有一定的linux基礎的話,可以直接看最後博主貼出的安裝命令,及操作,比較簡單,但是是完整安裝。
如果沒有基礎的話也沒有關係,博主會推薦很多適合初學者的部落格,一步一步地理解。

讓我們開始進入hadoop的學習與安裝

預設為完全分散式安裝
實驗條件是3臺Vm的ubuntu-server虛擬機器(可能部落格裡的linux是不一樣的,不過沒關係,都差不很多)
為什麼不選擇最新版本的hadoop呢?因為最新版本教程有點少,博主也是剛開始學習,所以選擇了相容性更高的低版本。

安裝時遇到的錯誤

ps:博主曾遇到的典型錯誤

至此hadoop安裝完畢

Hbase + zookeeper 的安裝

總結

可能是失敗的太多了,後面的安裝更加得心用手,就在一天的晚上一下全部安裝完畢。

說一下安裝過程中的自己認為重要的點:

  1. 用ssh免密連線只需要master與slave之間就可以,slave之間是不需要的。
  2. 配置檔案的時候,資料夾是可以自己建立的。
  3. 3.0版本與2.x版本之間差異還是存在的,如果熟悉2.x安裝時候3.0安裝可能會更好安裝
  4. centos版本的虛擬機器自帶root賬戶,雖然安裝起來不需要許可權的干擾,但是以後實際使用時還是需要有許可權管理的。
  5. 命令的使用能加快安裝的程序
  6. 理解配置檔案的內容,其實還有意義的。
  7. 配置只需一個,剩下的複製就可以了!!!

指令集錦

初始配置

sudo apt install openssh-server

192.168.178.142
hadoop1 192.168.178.137 hadoop2 192.168.178.139 hadoop3

修改源

sudo vi /etc/apt/sources.list

# 預設註釋了原始碼映象以提高 apt update 速度,如有需要可自行取消註釋
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

更新,下載編譯工具

sudo apt update

sudo apt install vim

    ps -A | grep apt
    sudo kill -9 程序ID

# sudo apt-get upgrade

修改名字


sudo hostname hadoop1

修改時間

sudo tzselect

sudo cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

安裝jdk,驗證


tar -zxf jdk-8u161-linux-x64.tar.gz

sudo mv jdk1.8.0_161/ /opt/

sudo vim /etc/profile.d/jdk1.8.sh

export JAVA_HOME=/opt/jdk1.8.0_161
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

source /etc/profile

java -version

ssh免密連線

sudo apt install ssh

sudo apt install rsync

ssh-keygen -t rsa 

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop1

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop2

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop3

hadoop的環境變數配置

sudo vim /etc/profile.d/hadoop2.7.5.sh
#!/bin/sh
export HADOOP_HOME="/opt/hadoop-2.7.5"
export PATH="$HADOOP_HOME/bin:$PATH"
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

hadoop內部環境變數

sudo vim /etc/profile.d/hadoop-env.sh 
export JAVA_HOME=/opt/jdk1.8.0_161

從節點配置

slaves
hadoop2
hadoop3

檔案配置

----------------------------------------------------------------

     ---------------core-site.xml---------------

<configuration>
        <!-- 指定hdfs的nameservice為ns1 -->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Hadoop1:9000</value>
        </property>
        <!-- Size of read/write buffer used in SequenceFiles. -->
        <property>
         <name>io.file.buffer.size</name>
         <value>131072</value>
       </property>
        <!-- 指定hadoop臨時目錄,自行建立 -->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/zd/hadoop/tmp</value>
        </property>
</configuration>

----------------------------------------------------------------

     ---------------hdfs-site.xml---------------

<configuration>
    <property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop1:50090</value>
    </property>
    <property>
      <name>dfs.replication</name>
      <value>2</value>
    </property>
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:/home/zd/hadoop/hdfs/name</value>
    </property>
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/home/zd/hadoop/hdfs/data</value>
    </property>
</configuration>

----------------------------------------------------------------

     ---------------yarn-site.xml---------------

<configuration>

<!-- Site specific YARN configuration properties -->
<!-- Configurations for ResourceManager -->
     <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
     </property>
     <property>
           <name>yarn.resourcemanager.address</name>
           <value>hadoop1:8032</value>
     </property>
     <property>
          <name>yarn.resourcemanager.scheduler.address</name>
          <value>hadoop1:8030</value>
      </property>
     <property>
         <name>yarn.resourcemanager.resource-tracker.address</name>
         <value>hadoop1:8031</value>
     </property>
     <property>
         <name>yarn.resourcemanager.admin.address</name>
         <value>hadoop1:8033</value>
     </property>
     <property>
         <name>yarn.resourcemanager.webapp.address</name>
         <value>hadoop1:8088</value>
     </property>
</configuration>

----------------------------------------------------------------

     ---------------mapred-site.xml---------------

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
          <name>mapreduce.jobhistory.address</name>
          <value>hadoop1:10020</value>
  </property>
  <property>
          <name>mapreduce.jobhistory.address</name>
          <value>hadoop1:19888</value>
  </property>
</configuration>

----------------------------------------------------------------

複製到從節點


scp -r hadoop-2.7.5 hadoop2:

sudo mv hadoop-2.7.5 /opt/

初始化

cd /opt/hadoop-2.7.5
hdfs namenode -format

啟動

cd /opt/hadoop-2.7.5/sbin
./start-all.sh

檢測,網頁檢測

jps

http://192.168.178.142:8088/

配置hbase環境變數

sudo vim /etc/profile.d/hbase1.2.6.sh
export HBASE_HOME=/opt/hbase-1.2.6 
export PATH=$HBASE_HOME/bin:$PATH

內部jdk配置

vim /opt/hbase-1.2.6/conf/hbase-env.sh
修改# export JAVA_HOME=/opt/jdk1.8.0_161

配置檔案

----------------------------------------------------------------

     ---------------hbase-site.xml---------------

<configuration>
    <property> 
        <name>hbase.rootdir</name> 
        <!-- hbase存放資料目錄 -->
        <value>hdfs://Hadoop1:9000/zd/hbase/hbase_db</value>
        <!-- 埠要和Hadoop的fs.defaultFS埠一致-->
    </property> 
    <property> 
        <name>hbase.cluster.distributed</name> 
        <!-- 是否分散式部署 -->
        <value>true</value> 
    </property> 
</configuration>

這裡與上面的教程不一樣

cd /opt/hbase-1.2.6/conf
vim regionservers
去掉預設的localhost,加入hadoop2、hadoop3

複製到從節點

scp -r hbase-1.2.6 hadoop2:

zookeeper的環境變數

sudo vim /etc/profile.d/zookeeper-3.4.8.sh
export ZOOKEEPER=/opt/zookeeper-3.4.8 
export PATH=$PATH:$ZOOKEEPER/bin

source /etc/profile

配置

cp zoo_sample.cfg zoo.cfg
修改:
dataDir=/opt/zookeeper-3.4.8/data
新增:
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888

發到從節點

scp -r zookeeper-3.4.8 hadoop2:

配置

三臺機器下面data目錄裡面各自建一個myid的檔案

cd /usr/tools/zookeeper-3.4.8/data
vi myid
然後裡面填上相應的數字
master是server.1,myid裡面填1
slaver1是server.2,myid裡面填2
slaver2是server.3,myid裡面填3

三臺分別啟動zookeeper
zkServer.sh start

然後,每臺機器上檢視狀態:
zkServer.sh status

結果如下正常:
ZooKeeper JMX enabled by default
Using config: /usr/tools/zookeeper-3.4.8/bin/../conf/zoo.cfg
Mode: follower

使用jps檢視:
jps

結果
QuorumPeerMain

完成,感謝閱讀。