安裝分布式Hadoop教學 - twilighthook/BigDataNote GitHub Wiki
Hadoop安裝總共分成三種:
- 單機模式(Standalone mode, local mode)
這種模式下不會有背景城市運行在JVM中。單機模式適合用於開發MapReduce程式,因為易於測試與除錯。 - 偽分散模式(Pseudo-distributed mode)
Hadoop服務運行於本機,可以模擬成小規模的叢集。 - 完全分散模式(Fully distributed mode)
Hadoop服務運行在一座叢集的主機上,真正的hdfs系統。
Hadoop是一個分散式架構,它本身是一個主從式架構(master-slave),由master下達指令,讓slave運行達到分散式運行,藉此增加處理效能
所以在實作時需要有兩台以上的電腦,可以用vm代替,此文章的demo是用linux(ubuntu)在VMware上實作
首先在兩台電腦皆設置新的使用者hadoopuser,歸屬於hadoopgroup的群組,並設定密碼
sudo addgroup Hadoop
sudo adduser -ingroup hadoop hadoopuser
sudo passwd hadoopuser
接下來切換至 hadoopuser設定SSH網路協定
在這邊要先將hadoopuser加入sudoers文件才有權限設置
(修改文件前先安裝vim)
sudo apt-get install vim
進到超級使用者權限->增加文件修改權限
su –
chmod u+w /etc/sudoers
在root ALL=(ALL) ALL下面新增hadoopuser ALL=(ALL) ALL
切換至hadoopuser
su – hadoopuser
打開 hostname 檔案,將一台改為 master,另一台改為 slave1
sudo vim /etc/hostname
或是使用
sudo hostname master
來做更改
接下來新增IP和主機名稱的對應
sudo vim /etc/hosts
192.168.100.100 master
192.168.100.101 slave1
在這裡可以用
ip addr
來得知ip位置
master必須使用SSH經金鑰認證,將工作分配給各個slave,要產生一組key,作為SSH密碼登入。
此時先安裝SSH
sudo apt-get install ssh
安裝完成後就生成一組金鑰
ssh-keygen -t rsa -P ""
並且將金鑰複製給slave1
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
scp -r ~/.ssh slave1:~/
設定完後,用 master 試試可否連線至 slave1,成功的話就會看到 @ 後面變成 slave1 了
ssh slave1
可以用下面這段安裝default的JAVA
sudo apt install default-jdk
安裝後可以用指令查看JAVA安裝版本
java -version
這邊安裝的是hadoop3.2.0版本 可以先到官網下載 接下來就可以開始安裝了 安裝前先到要安裝的位置
sudo tar -zxvf hadoop-2.6.0.tar.gz
然後需要一個tmp位置和hdfs(分散式儲存系統)裡面的data和name
sudo mkdir tmp hdfs hdfs/name hdfs/data
這裡可用sudo chown hadoopuser:hadoop * 將全部的資料夾給予hadoopuser使用者
sudo vim ~/.bashrc
加入下面的環境配置
# Set HADOOP_HOME
export HADOOP_HOME=/opt/hadoop
# Set JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
# Add Hadoop bin and sbin directory to PATH
export PATH=$PATH:$HADOOP_HOME/bin;$HADOOP_HOME/sbin
export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar
Hadoop 的兩個檔案 (hadoop-env.sh,yarn-env.sh) 也要加入 Java 環境變數
sudo vim /opt/hadoop/etc/hadoop/hadoop-env.sh
sudo vim /opt/hadoop/etc/hadoop/yarn-env.sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
接下來要修改一些hadoop的設定檔
都在hadoop/etc/hadoop/裡面
- 修改 core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
- 修改 hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
看有幾台slave就寫多少
- 修改(或新增) mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- 修改 yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
先在slave建立資料夾,並將加到使用者權限下
sudo mkdir hadoop
sudo chown hadoopuser:hadoop hadoop/
接下來用SSH的scp方式將檔案從master複製到slave底下
scp -r /opt/hadoop slave:/opt
並且修改master裡面slaves的設置
sudo vim /opt/hadoop/etc/hadoop/slaves
改成下方的內容(或是有更多slave)
slave1
hdfs namenode -format
/opt/hadoop/sbin/start-all.sh
jps
成功執行的話在master可以看到
XXXX SecondaryNameNode
XXXX ResourceManager
XXXX DataNode
XXXX NodeManager
XXXX NameNode
XXXX JPS
在slave可以看到
XXXX DataNode
XXXX NameNode
XXXX JPS
在這邊就已經最初始的安裝配置完成了 可以在masterIP:8088或是masterIP:9870看到你的設置,有顯示hdfs的一些基本訊息
接下來可以實作一些MapReduce的操作,就讓我們繼續學習下去吧