目錄
?前期準備
一、JDK的安裝
1、安裝jdk
2、配置Java環境變量?
?3、加載環境變量
4、進行校驗
二、hadoop的環境搭建
1、hadoop的下載安裝?
2、配置文件設置
2.1. 配置 hadoop-env.sh
2.2. 配置?core-site.xml
2.3. 配置 hdfs-site.xml
2.4. 配置 yarn-site.xml
2.5. 配置 mapred-site.xml
?3、Hdfs格式化?
4、啟動hdfs
5、訪問HDFS系統
?6、啟動yarn
7、訪問Yarn平臺頁面
8、Hadoop的集群模式(偽分布式省略)
8.1.集群規劃
8.2.設置免密登陸
8.3.修改hdfs-site.xml
8.4.修改workers
8.5.修改mapred-site.xml
8.6.修改yarn-site.xml
8.7.分發文件
8.8.停止服務刪除目錄
8.9.重啟服務
三、msyql安裝
1、卸載舊MySQL文件
2、Mysql下載安裝
3、配置環境變量?
4、刪除用戶組
5、創建用戶和組
6、創建文件夾
7、更改權限
8、安裝依賴包
9、初始化
10、記住初始密碼
11、將mysql加入到服務中
12、配置文件
(1)Mysql5.X版本配置
(2)Mysql8.X版本配置?
13、設置開機啟動
14、并查看進程
15、創建軟連接
16、登錄 Mysql
17、修改密碼
(1)Mysql5.X版本修改密碼
(2)Mysql8.X版本修改密碼
18、授權
(1)Mysql5.X版本授權
(2)Mysql8.X版本授權
四、HIve安裝?
1、下載安裝
2、配置環境變量
3、配置文件
4、拷貝jar包
5、初始化
6、啟動hive
五、問題與說明:
?前期準備
查看網卡:
配置靜態IP
vi /etc/sysconfig/network-scripts/ifcfg-ens32? ----? 根據自己網卡設置。
設置主機名
hostnamectl --static set-hostname ?主機名
例如:
hostnamectl --static set-hostname ?hadoop001
配置IP與主機名映射
vi /etc/hosts
關閉防火墻
systemctl stop firewalld
systemctl disable?firewalld
配置免密登錄
傳送門
一、JDK的安裝
1、安裝jdk
在/opt/model中上傳jdk包并解壓
tar -zxvf jdk-8u151-linux-x64.tar.gz
?
重命名,方便配置環境變量,避免更換jdk版本修改配置文件
?
2、配置Java環境變量?
系統級(全局) |
| 對所有用戶生效 |
用戶級(個人) |
| 只對當前用戶生效 |
| ? 幾乎所有 Linux/Unix 系統都有 | Ubuntu、CentOS、macOS 等 |
| ? CentOS/RHEL 系統使用 | CentOS、RHEL、Fedora |
| ? Ubuntu 使用 | Ubuntu、Debian |
| ? 用戶可創建 | 所有支持 Bash 的系統 |
| ? Ubuntu 默認生成 | Ubuntu、Debian |
| ? 用戶級 shell 配置 | 所有支持 Bash 的系統 |
vi ?/etc/profile
export JAVA_HOME=/opt/module/java? #此處是自己實際的Java安裝路徑
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
?3、加載環境變量
source /etc/profile
驗證環境變量是否生效:
env?| grep HOME
env?| grep PATH
4、進行校驗
??
二、hadoop的環境搭建
1、hadoop的下載安裝?
1.1. 下載
https://archive.apache.org/dist/hadoop/common/hadoop-3.2.2/
?下載 hadoop-3.2.2.tar.gz??安裝包1.2 上傳
使用xshell上傳到指定安裝路徑此處是安裝路徑是 /opt/module
??
1.3 解壓重命名
tar -xzvf hadoop-3.2.2.tar.gz
mv hadoop-3.2.2 hadoop
??
?
1.4 配置環境變量
vi ?/etc/profile
export JAVA_HOME=/opt/module/java
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
1.5 加載環境變量
source ?/etc/profile
驗證環境變量是否生效:
env?| grep HOME
env?| grep PATH
1.6檢驗安裝
hadoop version
出現下圖說明安裝成功
??
2、配置文件設置
2.1. 配置 hadoop-env.sh
hadoop偽分布式配置
export HADOOP_OS_TYPE=${HADOOP_OS_TYPE:-$(uname -s)}
export JAVA_HOME=/opt/module/java
2.2. 配置?core-site.xml
<configuration>
?? ?<!-- 指定HDFS中NameNode的地址 默認 9000端口-->
?? ?<property>
?? ??? ?<name>fs.defaultFS</name>
?? ??? ?<value>hdfs://hadoop001:9000</value>
?? ??? ?<description>配置NameNode的URL</description>
?? ?</property>?? ?<!-- 指定Hadoop運行時產生文件的存儲目錄 -->
?? ?<property>
?? ??? ?<name>hadoop.tmp.dir</name>
?? ??? ?<value>/opt/module/hadoop/data</value>
?? ?</property>? ??配置hive內容(下面要安裝hive,因此需要增加下面內容,否則不添加)
?? ?<!-- 配置允許哪些主機上的程序可以以root身份發起代理請求 -->
?? ?<property>
?? ??? ?<name>hadoop.proxyuser.root.hosts</name>
?? ??? ?<value>*</value>
?? ?</property>?? <!-- 配置允許哪些組的用戶可以以root身份發起代理請求 -->
?? ?<property>
?? ??? ?<name>hadoop.proxyuser.root.groups</name>
?? ??? ?<value>*</value>
?? ?</property>?? ?<!-- 配置允許哪些具體用戶可以以root身份發起代理請求-->
?? ?<property>
?? ??? ?<name>hadoop.proxyuser.root.users</name>
?? ??? ?<value>*</value>
?? ?</property>
</configuration>
2.3. 配置 hdfs-site.xml
<configuration>
? ? <!-- 數據的副本數量?如果是完全分布式的集群模式,則改為3 -->?
?? ?<property>?
?? ??? ?<name>dfs.replication</name>?
?? ??? ?<value>1</value>?
?? ?</property>?
?? ?<!-- 指定Hadoop運行時產生文件的存儲目錄 -->
? ?? ?<property>
? ? ? ? <name>dfs.namenode.name.dir</name>
? ? ? ? <value>/opt/module/hadoop/data/namenode</value>
? ? </property>
? ? <property>
? ? ? ? <name>dfs.datanode.data.dir</name>
? ? ? ? <value>/opt/module/hadoop/data/datanode</value>
? ? </property>
?? ?<!--設置權限為false-->
?? ?<property>
?? ??? ?<name>dfs.permissions.enabled </name>
?? ??? ?<value>false</value>
?? ?</property>
? ? <!-- hdfs的web管理頁面的端口 -->
? ? <property>
?? ??? ?<name>dfs.http.address</name>
?? ??? ?<value>hadoop001:9870</value>
?? ?</property>
? ? <!-- 設置secondname的端口,如果是完全分布式的集群模式,則改為hadoop003 -->
? ? <property>
? ? ? ? <name>dfs.namenode.secondary.http-address</name>
? ? ? ? <value>hadoop001:6002</value>
? ? </property>
</configuration>
2.4. 配置 yarn-site.xml
<configuration>
?? ?<!-- 指定MR走shuffle -->
?? ?<!-- NodeManager 上運行的輔助服務(auxiliary services),用于支持 MapReduce 的 shuffle 階段 -->
?? ?<!-- 必須啟用才能讓 YARN 支持 MapReduce 的 shuffle 功能 -->
?? ?<!-- 如果你使用的是 Spark 或其他框架,可能不需要這個配置 -->
? ? <property>
? ? ? ? <name>yarn.nodemanager.aux-services</name>
? ? ? ? <value>mapreduce_shuffle</value>
? ? </property>
? ??
? ? <!-- 指定ResourceManager的地址-->
? ? <!-- NodeManager 和 ApplicationMaster 會通過該主機名連接到 ResourceManager-->
? ? <property>
? ? ? ? <name>yarn.resourcemanager.hostname</name>
? ? ? ? <value>hadoop001</value>
? ? </property>
? ??
? ? <!-- 環境變量的繼承 -->
? ? <!-- 允許傳遞給容器的環境變量白名單 -->
? ? <!-- 設置哪些環境變量可以從 NodeManager 傳遞給啟動的應用程序容器(Container) -->
? ? <!-- 默認情況下,YARN 容器不會繼承所有的系統環境變量 -->
? ? <!-- 為了保證任務能正常運行,需要將必要的環境變量加入白名單 -->
? ? <!-- 常見如 JAVA_HOME、Hadoop 相關路徑等,都是應用程序運行所必需的 -->
? ? <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>
? ??
? ? <!--yarn單個容器允許分配的最大最小內存 -->
? ? <!--如果應用請求的內存小于這個值,YARN 會自動將其提升為這個最小值 -->
? ? <!--示例:如果某個任務只申請 100 MB,但設置了最小為 512,則實際分配 512 MB -->
? ? <property>
? ? ? ? <name>yarn.scheduler.minimum-allocation-mb</name>
? ? ? ? <value>512</value>
? ? </property>
?? ?<!--如果應用請求的內存超過這個值,YARN 會拒絕該請求 -->
?? ?<!--這個值不能超過 NodeManager 的總內存容量-->
? ? <property>
? ? ? ? <name>yarn.scheduler.maximum-allocation-mb</name>
? ? ? ? <value>4096</value>
? ? </property>
? ??
? ? <!-- yarn容器允許管理的物理內存大小 -->
? ? <!-- 指定當前 NodeManager 節點可提供給容器使用的最大物理內存總量(單位:MB)-->
? ? <!-- 這個值決定了該節點最多能運行多少個容器,取決于每個容器的內存需求。-->
? ? <property>
? ? ? ? <name>yarn.nodemanager.resource.memory-mb</name>
? ? ? ? <value>4096</value>
? ? </property>
? ??
? ? <!-- 關閉yarn對物理內存和虛擬內存的限制檢查 -->
? ? <!-- 是否啟用對容器使用的物理內存 進行檢查 -->
? ? <!-- 設為 true,YARN 會在容器超出其申請的物理內存時終止它 -->
? ? <!-- 防止某些任務占用過多內存導致整個節點崩潰。 -->
? ? <!-- 推薦生產環境中保持為 true。 -->
? ? <property>
? ? ? ? <name>yarn.nodemanager.pmem-check-enabled</name>
? ? ? ? <value>true</value>
? ? </property>
?? ?
?? ?<!-- 是否開啟虛擬內存檢查 -->
?? ?<!-- 若設為 true,YARN 會檢查虛擬內存使用情況并可能殺掉超限任務 -->
?? ?<!-- 有時虛擬內存使用較高是正常的(例如 JVM),所以部分場景下建議關閉此功能 設為Flase -->
? ? <property>
? ? ? ? <name>yarn.nodemanager.vmem-check-enabled</name>
? ? ? ? <value>false</value>
? ? </property>
</configuration>
2.5. 配置 mapred-site.xml
<configuration>
?? ?<!-- mr程序默認運行方式。yarn集群模式 local本地模式-->? ??<!-- 設置 MapReduce 應用程序的執行框架為 YARN 即?MR運行的資源調度模式--->
?? ?<property>
?? ?<name>mapreduce.framework.name</name>
?? ?<value>yarn</value>
?? ?</property>? ?<!-- 以下可以不用配置,作為了解內容
? ?當 YARN 啟動 MapReduce (ApplicationMaster、MapTask、ReduceTask)進程提供一致的環境變量,確保找到 MapReduce 的依賴庫和資源路徑。-->
?? ?<!-- MR App Master環境變量。用于告訴 ApplicationMaster?去哪里找 MapReduce 相關的 JAR 包或腳本-->
?? ?<property>
?? ?<name>yarn.app.mapreduce.am.env</name>
?? ?<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
?? ?</property>
?? ?<!-- 為每個 MR 的 MapTask 設置環境變量。-->
?? ?<property>
?? ?<name>mapreduce.map.env</name>
?? ?<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
?? ?</property>
?? ?<!-- 為每個 MR 的 ReduceTask 設置環境變量。-->
?? ?<property>
?? ?<name>mapreduce.reduce.env</name>
?? ?<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
?? ?</property>
</configuration>
?3、Hdfs格式化?
cd /opt/module/hadoop/
bin/hdfs ?namenode ?-format
下圖表示初始化成功
?
4、啟動hdfs
啟動hdfs分布式文件系統
cd /opt/module//hadoop/sbin
>> start-dfs.sh
使用?jps?查看啟動進程
?
5、訪問HDFS系統
訪問HDFS分布式文件系統的web頁面,如:http://192.168.200.130:9870/
??
?
?6、啟動yarn
啟動Yarn進程。
cd /opt/module/hadoop/sbin
>> start-yarn.sh
使用?jps?查看啟動進程
??
7、訪問Yarn平臺頁面
訪問hadoop分布式yarn頁面,如:http://192.168.200.130:8088/
??
8、Hadoop的集群模式(偽分布式省略)
? ? ? 如果是偽分布式模式,此過程可以省略。
8.1.集群規劃
? ? ? 模塊 | hadoop001 | hadoop002 | hadoop003 |
HDFS子進程 | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN子進程 | NodeManager | ResourceManager NodeManager | NodeManager |
8.2.設置免密登陸
? ? ?配置集群免密登錄
傳送門
8.3.修改hdfs-site.xml
??????修改數據的副本數量
??????secondname的主機設置(可選)
? ? <!-- 數據的副本數量 改為3 -->?
?? ?<property>?
?? ??? ?<name>dfs.replication</name>?
?? ??? ?<value>3</value>?
?? ?</property>?? ? <!--可選? 對于學習來說,可以不改。但實際生產過時會將其規劃到??hadoop003 -->
? ? <!-- 設置secondname的端口,完全分布式的集群模式,改為hadoop003 -->
? ? <property>
? ? ? ? <name>dfs.namenode.secondary.http-address</name>
? ? ? ? <value>hadoop003:6002</value>
? ? </property>
8.4.修改workers
? ? ? 將原來的localhost改為節點主機名
hadoop001
hadoop002
hadoop003
8.5.修改mapred-site.xml
? ? ? ?配置歷史服務器(可選)
<!-- 歷史服務器端地址 -->
<property>
????<name>mapreduce.jobhistory.address</name>
????<value>hadoop001:10020</value>
</property>
<!-- 歷史服務器web端地址 -->
<property>
????<name>mapreduce.jobhistory.webapp.address</name>
????<value>hadoop001:19888</value>
</property>
8.6.修改yarn-site.xml
? ? ?指定ResourceManager的地址:對于目前學習來說不改也可以,但在實際生產過程中?resourcemanager 和 namenode是在不同主機上,避免生產過程中資源不足導致內存溢出情況。
?????指定ResourceManager的地址(可選)
?????配置日志的聚集(可選)
<!--?可選? 指定ResourceManager的地址-->
<!-- NodeManager 和 ApplicationMaster 會通過該主機名連接到 ResourceManager-->
<property>
????<name>yarn.resourcemanager.hostname</name>
????<value>hadoop002</value>
</property><!-- 開啟日志聚集功能 -->
<property>
????<name>yarn.log-aggregation-enable</name>
????<value>true</value>
</property>
<!-- 設置日志聚集服務器地址 -->
<property> ?
????<name>yarn.log.server.url</name> ?
????<value>http://hadoop001:19888/jobhistory/logs</value>
</property>
<!-- 設置日志保留時間為7天 -->
<property>
????<name>yarn.log-aggregation.retain-seconds</name>
????<value>604800</value>
</property>
8.7.分發文件
注意:在分發文件前要做好三臺機器的IP與主機名映射 /etc/hosts?
?
進行分發文件
scp -r?/opt/module/hadoop?root@hadoop002:/opt/module/hadoop
scp -r?/opt/module/hadoop?root@hadoop003:/opt/module/hadoop
scp -r?/opt/module/java root@hadoop002:/opt/module/java
scp -r?/opt/module/java root@hadoop003:/opt/module/java
scp -r?/etc/profile root@hadoop002:/etc/profile
scp -r?/etc/profile root@hadoop003:/etc/profile
讓三臺機器文件生效
ssh hadoop001 "source /etc/profile"
ssh hadoop002 "source /etc/profile"
ssh hadoop003 "source /etc/profile"
8.8.停止服務刪除目錄
? ? ? 停止服務
cd /opt/module/hadoop/sbin
>> stop-all.sh
? ? ? 刪除格式化后的目錄重新格式化
rm -rf?/opt/module/hadoop/data
rm -rf?/opt/module/hadoop/logs/*
/opt/module/hadoop/bin/hdfs namenode -format
8.9.重啟服務
在hadoop001 上啟動HDFS
cd /opt/module/hadoop/sbin
>> start-dfs.sh
在hadoop002 上啟動YARN
cd /opt/module/hadoop/sbin
>> start-yarn.sh
群起腳本:
touch?/usr/bin/hdall.sh
chmod 777?/usr/bin/hdall.sh
vi /usr/bin/hdall.sh
#!/bin/bash if [ $# -lt 1 ] thenecho "No Args Input..."exit ; fi case $1 in "start")echo " =================== 啟動 hadoop集群 ==================="echo " --------------- 啟動 hdfs ---------------"ssh hadoop001 "/opt/module/hadoop/sbin/start-dfs.sh"echo " --------------- 啟動 yarn ---------------"ssh hadoop002 "/opt/module/hadoop/sbin/start-yarn.sh"echo " --------------- 啟動 historyserver ---------------"ssh hadoop001 "/opt/module/hadoop/bin/mapred --daemon start historyserver" ;; "stop")echo " =================== 關閉 hadoop集群 ==================="echo " --------------- 關閉 historyserver ---------------"ssh hadoop001 "/opt/module/hadoop/bin/mapred --daemon stop historyserver"echo " --------------- 關閉 yarn ---------------"ssh hadoop002 "/opt/module/hadoop/sbin/stop-yarn.sh"echo " --------------- 關閉 hdfs ---------------"ssh hadoop001 "/opt/module/hadoop/sbin/stop-dfs.sh" ;; *)echo "Input Args Error..." ;; esac
群起:/usr/bin/hdall.sh start
群停:/usr/bin/hdall.sh stop
如果:ResourceManager的地址和secondname的地址都是hadoop001,則在hadoop001 上啟動HDFS和YARN
cd /opt/module/hadoop/sbin
>> start-all.sh