hadoop入門設定
Hadoop分散式
目錄
以三臺虛擬機器組成hadoop分散式系統,其中一臺master,兩臺slave,master既是名稱節點,也是資料節點,其他都為資料節點。
配置環境變數
將hadoop-3..2.1放在/usr/soft下,並命名hadoop321
將jdk-10放在/usr/soft下,命名jdk10
更改/etc/profile檔案
在/etc/profile的最後加上
export JAVA_HOME=/usr/soft/jdk10 export PATH=$PATH:$JAVA_HOME/bin export HADOOP_HOME=/usr/soft/hadoop321 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
更新環境變數
. /etc/profile
配置hadoop
1、編輯/usr/soft/hadoop321/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
2、編輯/usr/soft/hadoop321/etc/hadoop/hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> #節點數量 <value>3</value> </property> <property> <name>dfs.http.address</name> #訪問ip:埠 <value>0.0.0.0:5700</value> </property> <property> <name>dfs.namenode.name.dir</name> #namenode位置 <value>file:///root/hadoop/dfs/namenode</value> </property> <property> <name>dfs.datanode.name.dir</name> #datanode位置 <value>file:///root/hadoop/dfs/datanode</value> </property> </configuration>
3、初始化namenode
hdfs name -formate
檢視/root/hadoop/dfs目錄下是否有namenode目錄
若存在,則NameNode初始化成功
若不存在,執行以下命令
cd /tmp
rm -rf *
清除快取,重新初始化
4、修改使用者配置(可選)
hadoop預設不能使用root使用者登入(許可權過大)
若要使用root使用者登入hadoop
需修改/usr/soft/hadoop321/sbin/start-dfs.sh和/usr/soft/hadoop321/sbin/stop-dfs.sh
在開頭新增以下程式碼
HDFS_NAMENODE_USER=root
HDFS_DATANODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
5、指定JAVA_HOME
hadoop不會指定的尋找JAVA_HOME需要配置
修改檔案/usr/soft/hadoop321/etc/hadoop/hadoop-env.sh
將原先程式碼
# export JAVA_HOME=
修改為
# export JAVA_HOME=/usr/soft/jdk10
6、開啟hdfs服務
執行命令開啟服務
start-dfs.sh
輸入命令測試
jps
顯示jps、datanode、namenode、secondarynamenode四項表示成功
可訪問當前ip:5700加入hdfs服務管理介面。(ip通過ip add檢視ens33對應的ip)
7、克隆虛擬機器
-
關閉虛擬機器
-
右擊虛擬機器選擇管理->克隆
-
選擇完整克隆(其他不變)
-
配置新虛擬機器為slave1
-
登入新虛擬機器,使用命令
hostnamectl set-hostname slave1
-
輸入 ip add檢視ip
-
重複上面,配置slave2
8、設定master對slave1和slave2的免密登入
-
建立金鑰
cd /root/.ssh ssh-keygen
在.ssh生成
id_rsa 私鑰
id_rsa.pub 公鑰
-
釋出公鑰
cat id_rsa.pub>>authorized_keys
authorized_keys:廣而告之檔案
-
免密登入slave
在slave中建立目錄/root/.ssh
在master中執行scp authorized_keys root@slave1 slave1的ip:/root/.ssh
即可在master中使用ssh slave1免密登入slave1
9、分散式hadoop:hdfs
主機名 | hdfs角色 | yarn角色 |
---|---|---|
master | namenode、datanode | resourcemanager |
slave1 | datanode | nodemanager |
slave2 | datanode | nodemanager |
域名配置
在三個虛擬機器中的/etc/hosts配置域名,在文末加上
192.168.33.129 master
192.168.33.130 slave1
192.168.33.131 slave2
ip是在主機上使用ip add獲取
設定叢集成員
為三個虛擬機器都配置
在/usr/soft/hadoop321/etc/hadoop/workers中新增內容
master
slave1
slave2
修改副本數量
修改/usr/soft/hadoop321/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.replication</name>
#節點數量
<value>3</value>
</property>
啟動hdfs
在master上啟動hdfs
hdfs會根據配置啟動slave1和slave2
訪問hadoop
上傳檔案
hdfs dfs -put a.txt hdfs://master:9000/root
根據檔案上傳是否成功判斷
瀏覽master的ip:5700到達hdfs的管理介面,檢視DataNode數量是否為3.
若不為3,可考慮先關閉hdfs,使用rm - rf /tmp將slave1和slave2的 /tmp目錄下的檔案全部刪除,執行find / -name VERSION查詢datanode相關的資訊,全部刪除。在啟動hdfs
注:因為虛擬機器都是克隆的,DataNode的id值都相同,無法在hdfs的管理介面上顯示全部。
yarn資源管理器
配置
配置/usr/soft/hadoop321/etc/hadoop/yarn-site.xml(每臺)
<configuration>
<property>
<name>yarn.nodemanager.aux-serivces</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
配置/usr/soft/hadoop321/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
若要使用root使用者登入,則需要配置yarn-start.sh和yarn-stop.sh
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root