一:搭建zk
https://blog.csdn.net/weixin_43446246/article/details/123327143
二:搭建hadoop,yarn,mapreduce。
1. 安裝hadoop。
sudo tar -zxvf hadoop-3.2.4.tar.gz -C /opt
2. 修改java配置路徑。
cd /opt/hadoop-3.2.4/etc/hadoop
vim hadoop-env.sh
增加以下內容
export JAVA_HOME=/opt/jdk1.8.0_211
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
java_home填寫自己安裝的路徑。
3. 修改配置文件。
- vim core-site.xml
將以下信息填寫到configuration中
<property><name>fs.defaultFS</name><value>hdfs://10.15.250.196:8020</value></property><!-- 指定hadoop數據的存儲目錄 --><property><name>hadoop.tmp.dir</name><value>/opt/hadoop-3.2.4/data</value></property><!-- 該參數表示可以通過 httpfs 接口訪問 HDFS 的 IP 地址限制 --><!-- 配置 root(超級用戶) 允許通過 httpfs 方式訪問 HDFS 的主機名、域名 --><property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><!-- 通過 httpfs 接口訪問的用戶獲得的群組身份 --><!-- 配置允許通過 httpfs 方式訪問的客戶端的用戶組 --><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property>
- vim hdfs-site.xml
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>10.15.250.202:50090</value>
</property>
<property>
<name>dfs.namenode.secondary.https-address</name>
<value>10.15.250.202:50091</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
- vim mapred-site.xml
<!-- 指定mr框架為yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 指定mapreduce jobhistory地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>10.15.250.196:10020</value>
</property>
<!-- 任務歷史服務器的web地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>10.15.250.196:19888</value>
</property>
<!-- 配置運行過的日志存放在hdfs上的存放路徑 -->
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/history/done</value>
</property>
<!-- 配置正在運行中的日志在hdfs上的存放路徑 -->
<property>
<name>mapreudce.jobhistory.intermediate.done-dir</name>
<value>/history/done/done_intermediate</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>
/opt/hadoop-3.2.4/etc/hadoop,
/opt/hadoop-3.2.4/share/hadoop/common/*,
/opt/hadoop-3.2.4/share/hadoop/common/lib/*,
/opt/hadoop-3.2.4/share/hadoop/hdfs/*,
/opt/hadoop-3.2.4/share/hadoop/hdfs/lib/*,
/opt/hadoop-3.2.4/share/hadoop/mapreduce/*,
/opt/hadoop-3.2.4/share/hadoop/mapreduce/lib/*,
/opt/hadoop-3.2.4/share/hadoop/yarn/*,
/opt/hadoop-3.2.4/share/hadoop/yarn/lib/*
</value>
</property>
- vim yarn-site.xml
<!-- 開啟RM高可用 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yarn-xdso</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分別指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>10.15.250.196</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>10.15.250.220</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>10.15.250.196:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>10.15.250.220:8088</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>10.15.250.196:2181,10.15.250.202:2181,10.15.250.220:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 開啟日志聚合 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
<!-- 啟用自動恢復 -->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!-- 制定resourcemanager的狀態信息存儲在zookeeper集群上 -->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<!-- Whether virtual memory limits will be enforced for containers. -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>3</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://10.15.250.196:19888/jobhistory/logs/</value>
</property>
- vim workers
10.15.250.196
10.15.250.202
10.15.250.220
4. copy到其他節點。
cd /opt
scp -r hadoop-3.2.4/ root@hadoop101:`pwd`
scp -r hadoop-3.2.4/ root@hadoop101:`pwd`
5.三臺機器全部配置環境變量。
#hadoop
export HADOOP_HOME=/opt/hadoop-3.2.4
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etcprofile
6. 進行初始化,啟動。
- 啟動zk
三臺機器全部執行
zkServer.sh start
- 在node01執行 格式化NameNode 。
hdfs namenode -format
- 在node01執行 啟動hdfs
start-dfs.sh
- 在node01執行 啟動yarn
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
7. 檢驗
jps
登錄頁面查看
三:搭建hive
1. 提前安裝mysql。
https://blog.csdn.net/weixin_43446246/article/details/135953602
2. 下載,解壓hive。
wget https://dlcdn.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt
3. 配置文件
- 修改環境配置腳本文件 hive-env.sh
cd /opt/apache-hive-3.1.2-bin/conf/cp hive-env.sh.template hive-env.shvim hive-env.sh
HADOOP_HOME=/opt/hadoop-3.2.4/
export HIVE_CONF_DIR=/opt/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/opt/apache-hive-3.1.2-bin/lib
- 修改配置文件 hive-site.xml
cp hive-default.xml.template hive-site.xmlvim hive-site.xml
<!-- 數據庫相關配置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://10.15.250.196:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<!-- 自動創建表 -->
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
<!-- 強制 MetaStore 的 schema 一致性,開啟的話會校驗在 MetaStore 中存儲的信息的版本和 Hive 的 jar 包中的版本一致性,并且關閉自動
schema 遷移,用戶必須手動的升級 Hive 并且遷移 schema。關閉的話只會在版本不一致時給出警告,默認是 false 不開啟 -->
<!-- 元數據校驗 -->
<property>
<name>hive.metastore.schema.verification</name>
<!-- MySQL8 這里一定要設置為 true,不然后面 DROP TABLE 可能會出現卡住的情況 -->
<value>true</value>
</property>
<!-- 美化打印數據 -->
<!-- 是否顯示表名與列名,默認值為 false -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<!-- 是否顯示數據庫名,默認值為 false -->
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<!-- Hive 數據倉庫的位置(HDFS 中的位置) -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/hive/warehouse</value>
</property>
<!-- HiveServer2 通過 Thrift 訪問 MetaStore -->
<!-- 配置 Thrift 服務綁定的服務器地址,默認為 127.0.0.1 -->
<!--
<property>
<name>hive.server2.thrift.bind.host</name>
<value>127.0.0.1</value>
</property>
-->
<!-- 配置 Thrift 服務監聽的端口,默認為 10000 -->
<!--
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
-->
<!-- HiveServer2 的 WEBUI -->
<property>
<name>hive.server2.webui.host</name>
<value>10.15.250.196</value>
</property>
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>
<!-- 指定 hive.metastore.uris 的 port,為了啟動 MetaStore 服務的時候不用指定端口 -->
<!-- hive ==service metastore -p 9083 & | hive ==service metastore -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://10.15.250.196:9083</value>
</property>
- 配置日志組件,
mkdir /opt/apache-hive-3.1.2-bin/logs
cp hive-log4j2.properties.template hive-log4j2.properties
vim hive-log4j2.properties將 property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name} 替換為
property.hive.log.dir = /opt/yjx/apache-hive-3.1.2-bin/logs
- 添加驅動包
將mysql驅動包,放到對應的目錄下。
mv mysql-connector-java-8.0.18.jar /opt/apache-hive-3.1.2-bin/lib/
jar包沖突
cp /opt/hadoop-3.2.4/share/hadoop/common/lib/guava-27.0-jre.jar /opt/apache-hive-3.1.2-bin/lib/
rm /opt/apache-hive-3.1.2-bin/lib/guava-19.0.jar
5.copy到其他服務器上,三臺配置環境變量。
cd /opt/
scp apache-hive-3.1.2-bin/ root@hadoop101:`pwd`
scp apache-hive-3.1.2-bin/ root@hadoop102:`pwd`
三臺機器配置環境變量
vim /etc/profile
#hive
export HIVE_HOME=/opt/apache-hive-3.1.2-bin
export HIVE_CONF_DIR=$HIVE_HOME/bin
export PATH=$HIVE_HOME/bin:$PATH
6. 初始化。
- 檢查mysql是否啟動。
- 啟動 ZooKeeper(三臺機器都需要執行)。
- 啟動 HDFS + YARN。
start-all.sh
- 啟動 JobHistory。
mapred --daemon start historyserver
- 初始化 hive 數據庫(第一次啟動時執行)。
schematool -dbType mysql -initSchema
- 啟動hive。
nohup hive --service metastore > /dev/null 2>&1 &
nohup hiveserver2 > /dev/null 2>&1 &