一、前言
開始學習數據處理相關的知識了,第一步是搭建一個Hadoop集群。搭建一個分布式集群需要多台電腦,在此我選擇采用VMWare+CentOS7搭建一個三台虛擬機組成的Hadoop集群。
注:1.本次搭建環境中操作系統的用戶名為hadoop,請自行替換/home/hadoop為本機對應路徑。
2.本次用到的軟件版本為:
-
- VMware Workstation 14 Pro 14.1.3 build-9474260
- CentOS 7.5.1804
- Java 1.8.0_181
- Apache Hadoop 2.7.7
二、配置虛擬機
1.配置三台虛擬機
首先創建新的虛擬機,自定義創建,1核1G,網上教程很多不再贅述。
安裝完CentOS 7后,如果出現無法連接網絡的問題,可以參考https://www.cnblogs.com/sunylat/p/7214753.html這個帖子。參照https://www.cnblogs.com/comexchan/p/5815869.html設置yum的源以后,使用`yum -y update`進行更新。然后關閉虛擬機,選擇VMWare的克隆功能克隆兩台一樣的虛擬機。
2.搭建桌面環境
為了方便丟jar和腳本進去,給打算用來當主機的一台增加一個桌面操作系統。我這里選用GNOME,具體用哪個自己參考。安裝命令為 yum groupinstall "GNOME Desktop ,注意引號。安裝完畢后,使用 startx 可啟動桌面。 Ctrl + Alt + F6 和 Ctrl + Alt + F7 分別對應切換到命令行窗口和切換到圖形化界面。
3.配置免密
不配置免密登錄在啟動集群的時候要一直輸密碼非常麻煩,為此配置三台機器之間互相免密登錄。方法參考 https://blog.csdn.net/lzh_86/article/details/80159104 。
4.安裝jdk
先確認一下自己的Java版本,1.8版本可以跳過此步驟,否則去java官網下載1.8版本的jdk並配置環境變量。
5.安裝Hadoop
下載目標版本的hadoop的tar文件,這里我安裝到/home/hadoop/下,安裝完以后出現hadoop-2.7.7文件夾。在一個指定路徑(這里我在hadoop安裝文件夾下)建立/tmp、/var、/dfs、/dfs/name、/dfs/data這幾個文件夾。進入安裝目錄/etc/hadoop/,修改core-site.xml,在<configuration>節點內加入配置:
<configuration> <property> <name>hadoop.tmp.dir</name> <!-- 剛才設置的tmp文件夾路徑 --> <value>/home/hadoop/hadoop-2.7.7/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.default.name</name> <!-- master對應設置的主機,在三台虛擬機內都要重復配置,此時設置為對應虛擬機名 --> <value>hdfs://master:9000</value> </property> </configuration>
接下來修改hadoop-env.sh文件,將`export JAVA_HOME=${JAVA_HOME}`修改為自己的jdk路徑。
下一個是hdfs-site.xml文件,同樣在<configuration>節點內加入配置
<configuration> <property> <name>dfs.name.dir</name> <!-- 剛才設置的name文件夾路徑 --> <value>/home/lxz/hadoop/dfs/name</value> </property> <property> <name>dfs.data.dir</name> <!-- 剛才設置的data文件夾路徑 --> <value>/home/lxz/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> <!-- hdfs副本數 --> <value>2</value> </property> <property> <name>dfs.permissions</name> <value>false</value> <!-- 開啟權限檢查 --> </property> </configuration>
下一步, cp mapred-site.xml.template mapred-site.xml 從模板生成配置文件,修改該文件在<configuration>節點內加入配置:
<configuration> <property> <name>mapred.job.tracker</name> <!-- 修改master為對應主機名 --> <value>hdfs://master:49001</value> </property> <property> <name>mapred.local.dir</name> <!-- var文件夾位置 --> <value>/home/lxz/hadoop/var</value> </property> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
接下來修改slaves文件,將localhost修改為servent1和servent2。
修改yarn-site.xml文件,在<configuration>節點內加入配置:
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <!-- 同理,修改master為對應主機名 --> <value>master</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>${yarn.resourcemanager.hostname}:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>${yarn.resourcemanager.hostname}:8030</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>${yarn.resourcemanager.hostname}:8088</value> </property> <property> <name>yarn.resourcemanager.webapp.https.address</name> <value>${yarn.resourcemanager.hostname}:8090</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>${yarn.resourcemanager.hostname}:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>${yarn.resourcemanager.hostname}:8033</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <!-- 每個節點可用內存,單位MB,默認8182MB --> <value>1024</value> </property> <property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>2.1</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>1024</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> </configuration>
在另外兩台分機上重復上述操作。然后進入主機安裝目錄的bin文件夾下,執行 ./hadoop namenode -format 命令進行初始化,如果只有INFO級別日志則成功。隨后進入安裝目錄下的sbin目錄執行 ./start-all.sh 命令.等執行完畢后,可以在瀏覽器中訪問master:50070和master:8088查看是否運行成功。