1 伺服器基礎環境準備
機器: Centos7
hadoop: 3.3.1 版本
jdk: 1.8
1.1 vim /etc/hostname
1.2 vim /etc/hosts
1.3 關閉防火牆
systemctl stop firewalld.service #關閉防火牆
systemctl disable firewalld.service #禁止防火牆開啟自啟
1.4 叢集時間同步
yum -y install ntpdate
ntpdate ntp4.aliyun.com
1.5 建立指定目錄
mkdir -p /export/server/ #軟體安裝路徑
mkdir -p /export/data/ #資料存儲路徑
mkdir -p /export/software/ #安裝包存放路徑
1.6 ssh免密登入
ssh-keygen #4個回車 生成公鑰、私鑰
ssh-copy-id node1
否則在啟動的時候有警告提示如下:
2 上傳安裝包、解壓安裝包
2.1 安裝jdk
2.2 上傳、解壓Hadoop安裝包
tar zxvf hadoop-3.3.1.tar.gz
3 Hadoop安裝包目錄結構
配置檔案概述
- 第一類1個:hadoop-env.sh
-
第二類4個:xxxx-site.xml ,site表示的是使用者定義的配置,會覆寫default中的預設配置。
core-site.xml 核心子產品配置
hdfs-site.xml hdfs檔案系統子產品配置
mapred-site.xml MapReduce子產品配置
yarn-site.xml yarn子產品配置
- 第三類1個:workers
- 所有的配置檔案目錄:/export/server/hadoop-3.3.1/etc/hadoop/
4 配置hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
5 配置core-site.xml
<!-- 設定預設使用的檔案系統 Hadoop支援file、HDFS、GFS、ali|Amazon雲等檔案系統
按照自己要求配置 可以是ip+端口,端口不固定
-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
<!-- 設定Hadoop本地儲存資料路徑 按照自己的路徑配置-->
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop-3.3.1</value>
</property>
<!-- 設定HDFS web UI使用者身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 整合hive 使用者代理設定 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 垃圾桶檔案儲存時間 -->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
6 配置hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- 按照自己的路徑配置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/export/data/hadoop-3.3.1/tmp/dfs/name</value>
</property>
<!-- 按照自己的路徑配置-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/export/data/hadoop-3.3.1/tmp/dfs/data</value>
</property>
7 配置mapred-site.xml
<!-- 設定MR程式預設運作模式: yarn叢集模式 local本地模式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- MR程式曆史伺服器端位址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<!-- 曆史伺服器web端位址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
注意: HADOOP_HOME待會要在環境變量中配置。
8 配置yarn-site.xml
<!-- 設定YARN叢集主角色運作機器位置 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 是否将對容器實施實體記憶體限制 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 是否将對容器實施虛拟記憶體限制。 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 開啟日志聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 設定yarn曆史伺服器位址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://node1:19888/jobhistory/logs</value>
</property>
<!-- 儲存的時間7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
9 配置環境變量
vim /etc/profile
export HADOOP_HOME=/export/server/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
重新加載環境變量 驗證是否生效
source /etc/profile
驗證環境變量是否生效
hadoop
10 啟動hadoop環境
10.1 格式化
- NameNode format(格式化操作)
- 首次啟動HDFS時,必須對其進行格式化操作。
- format本質上是初始化工作,進行HDFS清理和準備工作
- 指令:hdfs namenode -format
format隻能進行一次,後續不再需要,如果多次format除了造成資料丢失外,還會導緻hdfs叢集主從角色之間互不識别。通過删除所有機器hadoop.tmp.dir目錄重新format解決。
注意:
如果執行多次在put檔案的時候會報錯如下:
解決辦法:
首先關閉服務,然後删除data下的tmp檔案夾,最後重新格式化并啟動就可以解決。
10.2 啟動
在node1上,使用軟體自帶的shell腳本一鍵啟動。
HDFS叢集
start-dfs.sh
stop-dfs.sh
YARN叢集
start-yarn.sh
stop-yarn.sh
Hadoop整體叢集
start-all.sh
stop-all.sh
啟動完畢之後可以使用jps指令檢視程序是否啟動成功。
Hadoop啟動日志路徑:/export/server/hadoop-3.3.1/logs/。
11 網址通路
需要在本地host配置映射後通路。
11.1 HDFS叢集
位址:http://namenode_host:9870
其中namenode_host是namenode運作所在機器的主機名或者ip
如果使用主機名通路,别忘了在Windows配置hosts
http://node1:9870/
HDFS檔案系統Web頁面浏覽
11.2 YARN叢集
位址:http://resourcemanager_host:8088
其中resourcemanager_host是resourcemanager運作所在機器的主機名或者ip
如果使用主機名通路,别忘了在Windows配置hosts
http://node1:8088/cluster
12 HDFS 初體驗
- HDFS本質就是一個檔案系統。
- 有目錄樹結構 和Linux類似,分檔案、檔案夾。
12.1 shell指令操作
//建立檔案夾
hadoop fs -mkdir /itcast
//上傳檔案
hadoop fs -put test.out /itcast
// 列出HDFS線上根目錄
hadoop fs -ls /
12.2 Web UI頁面操作
13 MapReduce+YARN 初體驗
13.1 評估圓周率π
執行Hadoop官方自帶的MapReduce案例,評估圓周率π的值。
cd /export/server/hadoop-3.3.1/share/hadoop/mapreduce/
hadoop jar hadoop-mapreduce-examples-3.3.1.jar pi 2 4