Linux虛擬機器上安裝Hadoop叢集(初學)
阿新 • • 發佈:2019-01-08
測試已成功完成安裝的版本
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 的安裝
總結
可能是失敗的太多了,後面的安裝更加得心用手,就在一天的晚上一下全部安裝完畢。
說一下安裝過程中的自己認為重要的點:
- 用ssh免密連線只需要master與slave之間就可以,slave之間是不需要的。
- 配置檔案的時候,資料夾是可以自己建立的。
- 3.0版本與2.x版本之間差異還是存在的,如果熟悉2.x安裝時候3.0安裝可能會更好安裝
- centos版本的虛擬機器自帶root賬戶,雖然安裝起來不需要許可權的干擾,但是以後實際使用時還是需要有許可權管理的。
- 命令的使用能加快安裝的程序
- 理解配置檔案的內容,其實還有意義的。
- 配置只需一個,剩下的複製就可以了!!!
指令集錦
初始配置
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
完成,感謝閱讀。