環境準備
- vm虛擬機器(自行安裝Centos7系統)
- hadoop3.x安裝包(linux版本)
- java1.8安裝包(linux版本)
為了能夠按照教程順利操作,需要注意幾點細節
- 不要不看文字直接複製貼上
- 操作命令的使用者很重要,否則後續會引發關於許可權的問題
- ftp 與 終端工具需要自己操作使用本教程不涵蓋操作,如有需要,自行百度,本教程均使用終端shell工具截圖,其性質與linux系統右鍵開啟終端相同。
開始啦!
- 使用root使用者登入,用一個單獨的使用者管理hadoop叢集,所以要用管理員(root)使用者建立一個名字為hadoop的使用者。
[root@hadoop102 ~]# useradd hadoop
- 設定 hadoop 使用者的密碼
[root@hadoop102 ~]# passwd hadoop
- 給 hadoop 使用者提權,編輯如下路徑檔案
[root@hadoop102 ~]# vim /etc/sudoers
將檔案此處修改為這樣(在100行左右)
- 修改靜態IP
[root@hadoop102 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
靜態ip檔案修改如下
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="385ea190-1b85-42cf-9df4-916f2dd86bc7"
DEVICE="ens33"
ONBOOT="yes"
#ip 寫自己設定的
IPADDR=192.168.127.112
#子網掩碼 固定的
NETMASK=255.255.255.0
#閘道器 就是將你ip最後一段改成1
GATEWAY=192.168.127.1
- 修改主機名
[root@hadoop102 ~]# vim /etc/hostname
檔案內寫入自己的主機名字即可
- 修改主機域名對映
[root@hadoop102 ~]# vim /etc/hosts
hosts檔案內容如下
-
關閉防火牆(執行b即可永久關閉)
-
一次性關閉 -- 重啟之後系統會預設開啟防火牆
[root@hadoop102 ~]# systemctl stop firewalld
-
永久關閉防火牆
[root@hadoop102 ~]# systemctl disable firewalld
-
檢視當前防火牆狀態
[root@hadoop102 ~]# systemctl status firewalld
狀態截圖
-
-
重啟機器,生效所有配置,注意 下次登入直接使用 hadoop 賬戶資訊登入系統,這樣子直接建立目錄許可權就是屬於hadoop的
- 如果想要終端連線虛擬機器,待重啟之後即可輸入ip與使用者資訊即可登入終端。
[root@hadoop102 ~]# reboot
-
建立javajdk 和 hadoop 安裝所需目錄
-
建立軟體安裝包存放目錄
- software目錄用於存放安裝包
- module目錄用於軟體的安裝目錄(或者叫解壓目錄)
[hadoop@hadoop102 /]$ sudo mkdir /opt/software [hadoop@hadoop102 /]$ sudo mkdir /opt/module
-
賦予software目錄上傳許可權,可以看到下面的許可權已經允許外部讀取寫入
[root@hadoop102 opt]# chmod +777 /opt/software /opt/module [root@hadoop102 opt]# ll 總用量 12 drwxrwxrwx. 2 root root 4096 3月 9 21:56 module drwxr-xr-x. 2 root root 4096 10月 31 2018 rh drwxrwxrwx. 2 root root 4096 3月 9 21:56 software
-
上傳hadoop和java安裝包(本操作不涵蓋,注意:使用任意的ftp工具登入連線時候請使用 hadoop 使用者登入操作)
-
解壓至module目錄
[hadoop@hadoop102 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C ../module/ [hadoop@hadoop102 software]$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C ../module/
-
-
配置java 和 hadoop的環境變數
-
切換至root使用者作業系統檔案,操作完成之後切換成hadoop使用者
[hadoop@hadoop102 software]$ su root
-
使用root使用者修改環境變數檔案,在檔案末尾追加如下資訊,如果你的安裝路徑跟我不同這裡需要寫你自己的,跟著教程走且是同一個版本安裝包或者同一個安裝資料夾名字的不需要任何修改
#java export JAVA_HOME=/opt/module/jdk1.8.0_212 export PATH=$PATH:$JAVA_HOME/bin #hadoop3.1.3 export HADOOP_HOME=/opt/module/hadoop-3.1.3 export PATH=$PATH:$HADOOP_HOME/bin
-
切換至hadoop使用者,並生效配置檔案,檢視效果
[hadoop@hadoop102 software]$ source /etc/profile
-
自行執行如下命令進行環境測試,足夠自行不測試也可以的。
[hadoop@hadoop102 software]$ java [hadoop@hadoop102 software]$ javac [hadoop@hadoop102 software]$ java -version [hadoop@hadoop102 software]$ hadoop version
-
-
配置hadoop
-
編輯core-site.xml檔案
[hadoop@hadoop102 /]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
<!-- 指定NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop102:8020</value> </property> <!-- 指定hadoop資料的儲存目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-3.1.3/data</value> </property>
-
編輯hdfs-site.xml檔案
[hadoop@hadoop102 /]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/hdfs-site.xml
<!-- nn web端訪問地址--> <property> <name>dfs.namenode.http-address</name> <value>hadoop102:9870</value> </property> <!-- 2nn web端訪問地址--> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop104:9868</value> </property>
-
編輯yarn-site.xml檔案
[hadoop@hadoop102 /]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml
<!-- 指定MR走shuffle --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop103</value> </property> <!-- 環境變數的繼承 --> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property>
-
編輯mapred-site.xml檔案
[hadoop@hadoop102 /]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml
<!-- 指定MapReduce程式執行在Yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
-
編輯hadoop-env.sh檔案
[hadoop@hadoop102 /]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/hadoop-env.sh
- 檔案末尾追加一行
export JAVA_HOME=/opt/module/jdk1.8.0_212
-
編輯workers檔案
[hadoop@hadoop102 hadoop]$ vim workers
- 寫入如下內容
hadoop102 hadoop103 hadoop104
-
-
到此步驟,關閉虛擬機器,克隆兩臺,請自行百度,待克隆完成之後,開啟兩個克隆的機器,不要通過終端連線,然後做下面操作,在vm中進行。
-
三臺主機都使用root使用者登入
-
修改克隆1機器的主機名
[root@hadoop102 hadoop]# vim /etc/hostname
內容如下
hadoop103
-
修改克隆1的ip
[root@hadoop102 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
內容如下
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="385ea190-1b85-42cf-9df4-916f2dd86bc7" DEVICE="ens33" ONBOOT="yes" IPADDR=192.168.127.113 NETMASK=255.255.255.0 GATEWAY=192.168.127.1
-
修改克隆2機器的主機名
[root@hadoop102 hadoop]# vim /etc/hostname
內容如下
hadoop104
-
修改克隆2機器的ip
[root@hadoop102 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
內容如下
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="385ea190-1b85-42cf-9df4-916f2dd86bc7" DEVICE="ens33" ONBOOT="yes" IPADDR=192.168.127.114 NETMASK=255.255.255.0 GATEWAY=192.168.127.1
-
重啟兩臺克隆機器,使配置重新載入生效。
[root@hadoop102 ~]#reboot
-
-
-
配置免密登入
-
hadoop102生成免密併傳送給其餘兩個節點(hadoop102,hadoop103,hadoop104)
[hadoop@hadoop102 .ssh]$ ssh-keygen -t rsa [hadoop@hadoop104 .ssh]$ ssh-copy-id hadoop102 [hadoop@hadoop102 .ssh]$ ssh-copy-id hadoop103 [hadoop@hadoop102 .ssh]$ ssh-copy-id hadoop104
-
hadoop103生成免密併傳送給其餘兩個節點(hadoop102,hadoop103,hadoop104)
[hadoop@hadoop103 .ssh]$ ssh-keygen -t rsa [hadoop@hadoop103 .ssh]$ ssh-copy-id hadoop102 [hadoop@hadoop104 .ssh]$ ssh-copy-id hadoop103 [hadoop@hadoop103 .ssh]$ ssh-copy-id hadoop104
-
hadoop104生成免密併傳送給其餘兩個節點(hadoop102,hadoop104,hadoop103)
[hadoop@hadoop104 .ssh]$ ssh-keygen -t rsa [hadoop@hadoop104 .ssh]$ ssh-copy-id hadoop102 [hadoop@hadoop104 .ssh]$ ssh-copy-id hadoop103 [hadoop@hadoop104 .ssh]$ ssh-copy-id hadoop104
-
-
格式化(必須主節點操作,既hadoop102這個節點)
[hadoop@hadoop102 sbin]$ hdfs namenode -format
-
然後可以通過如下文字檢視對應的資訊
192.168.127.112:9870 --訪問hadoop叢集前臺頁面 192.168.127.113:8088 --訪問hadoop的所有應用頁面 還可以通過各個節點jps命令檢視啟動的任務節點狀態。