Hadoop的安裝包括3中模式:
(1)單機模式:只在一臺機器上運行,存儲採用本地文件系統,沒有采用分佈式文件系統HDFS。
(2)僞分佈式模式:存儲採用分佈式文件系統HDFS,但是HDFS的節點和數據節點都在同一節點。
(2)分佈式模式:存儲採用分佈式文件系統HDFS,而且HDFS的節點和數據節點位於不同機器上。
1 創建Hadoop用戶
1.1 創建新用戶
用戶名爲hadoopuser
[root@hadoop ~]# sudo adduser hadoopuser
[root@hadoop ~]# passwd hadoopuser
Changing password for user hadoopuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
1.2分配權限 設置Root(管理員)權限
1> 第一步:將用戶加入管理權限組
執行命令: usermod -a -G wheel hadoopuser
2> 第二步,修改sudoers文件爲可修改狀態,如下:
chmod -v u+w /etc/sudoers
3> 第三步,修改sudoers文件,新增一行指令,使新用戶和Root一樣的權限,如下圖所示:
vim /etc/sudoers
在 root ALL=(ALL) ALL 下 新增一行:hadoopuser ALL=(ALL) ALL
注意:小細節:ypsroot ALL=(ALL) NOPASSWD: ALL 可以讓ypsroot賬號在操作時不輸入密碼!(nopasswd:)
wq保存即可;
**在使用的時候,記住指令前面要加 sudo
上面我們修改sudoers文件爲可修改,此時我們應該重新把它修改爲只讀模式:
4> 執行如下命令: chmod -v u-w /etc/sudoers
解壓 hadoop-3.2.1.tar.gz
cd /usr/local
tar -zxvf hadoop-3.2.1.tar.gz
查看hadoop版本號:hadoop version
僞分佈式配置
在單個節點(一臺機器上)以僞分佈式的方式運行。
修改配置文件
cd /usr/local/hadoop-3.2.1/etc/hadoop
修改core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml文件
core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-3.2.1/hdfs-tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
hadoop.tmp.dir
用於保存臨時文件,如果沒有配置這個參數,則默認使用的臨時目錄爲/tmp/hadoo-hadoop
,這個目錄在Hadoop重啓後會被系統清理掉。fs.defaultFS
用於指定HDFS的訪問地址。
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>localhost:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-3.2.1/file-tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-3.2.1/file-tmp/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
dfs.replicaion
:指定副本數量,在分佈式文件系統中,數據通常會被冗餘的存儲多份,以保證可靠性和安全性,但是這裏用的是僞分佈式模式,節點只有一個,也有就只有一個副本。dfs.namenode.name.di
:設定名稱節點元數據的保存目錄dfs.datanode.data.dir
:設定數據節點的數據保存目錄
mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>localhost:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>localhost:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.1/hdfs-tmp</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.1/hdfs-tmp</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.1/hdfs-tmp</value>
</property>
</configuration>
yarn-site.xml:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>localhost:8088</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>localhost:8030</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:8032</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>localhost:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>localhost:8033</value>
</property>
</configuration>
格式化hdfs
hdfs namenode -format
啓動hadoop
start-all.sh
關閉hadoop
stop-all.sh
查看啓動情況
hdfs網頁如下圖,可以看到文件信息,地址:http://127.0.0.1:9870/
yarn的網頁如下圖,可以看到任務信息,地址:http://127.0.0.1:8088/cluster
至此,hadoop3.2.1僞分佈式搭建和驗證完畢。
提示:
ERROR: Unable to write in xxx/logs. Aborting.
在進行Hadoop節點格式化時候出現
Starting resourcemanager ERROR: Unable to write in /home/zhang/opt/hadoop-3.1.0/logs. Aborting.
原因:權限不夠
加入-R 參數,將讀寫權限傳遞給子文件夾
chmod -R 777 /logs
或者出現了Cannot create directory
同樣是因爲權限不夠:將需要的權限給予相應的 文件夾
sudo chmod -R a+w /tmp
啓動hadoop,報錯Error JAVA_HOME is not set and could not be found
報如錯誤:JAVA_HOME is not set and could not be found,可能是因爲JAVA_HOME環境沒配置正確,還有一種情況是即使各結點都正確地配置了JAVA_HOME,但在集羣環境下還是報該錯誤,解決方法是顯示地重新聲明一遍JAVA_HOME
1、檢查JAVA_HOME是否配置正確(僞分佈式環境)
啓動start-all.sh時報錯,錯誤所示 Error JAVA_HOME is not set and could not be found
檢查環境變量
輸入java –version,查看jdk是否安裝成功
輸入export,查看jdk環境變量是否設置成功
2.在集羣環境下,即使各結點都正確地配置了JAVA_HOME,也會錯誤Error JAVA_HOME is not set and could not be found
在hadoop-env.sh中,再顯示地重新聲明一遍JAVA_HOME