hadoop3.0 +hive3.x 叢集環境搭建
阿新 • • 發佈:2022-04-19
一、環境清單
hostname | 說明 | 已安裝軟體 |
---|---|---|
hadoop235 | mysql5.7 | |
hadoop236 | namenode | hadoop3.0,hive-3.1.2 |
hadoop237 | SecondaryNameNode、JobHistoryServer | hadoop3.0 |
hadoop238 | ResourceManager | hadoop3.0 |
二、hadoop 環境搭建
配置主機hosts檔案
172.20.10.235 hadoop235 172.20.10.236 hadoop236 172.20.10.237 hadoop237 172.20.10.238 hadoop238
免密登入 (雙向都需執行)
- hadoop236想登入hadoop237,需要將hadoop236的金鑰資訊拷貝到hadoop237機器
ssh-keygen -t rsa
ssh-copy-id hadoop237
2.1 配置jdk 8環境
2.1.1 解除安裝自帶jdk
# 解除安裝自帶jdk7
rpm -qa | grep jdk 或 rpm -qa | grep java | xargs rpm -e --nodeps
2.1.2 配置jdk8
- 編輯
/etc/profile.d/bigdata.sh
,並執行source命令
export JAVA_HOME=/data/soft/jdk1.8.0_191 export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/sbin
2.2 配置hadoop 3環境
2.2.1 hdfs配置
1. hadoop-env.sh
export JAVA_HOME=/data/soft/jdk1.8.0_191
2. core-site.xml
<configuration> <!-- 指定NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop236:8020</value> </property> <!-- 指定hadoop資料的儲存目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/data/soft/modules/hadoop-3.0.0/dataDir</value> </property> </configuration>
3.hdfs-site.xml
<configuration>
<!--指定namenode web ui的地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop236:9870</value>
<description>
The address and the base port where the dfs namenode web ui will listen on.
</description>
</property>
<!--指定secondaryNamenode web ui的地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop237:9868</value>
<description>
The secondary namenode http server address and port.
</description>
</property>
</configuration>
3. yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 指定MR走shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop238</value>
</property>
<!-- 環境變數的繼承 -->
<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>
<!-- 開啟日誌聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 設定日誌聚集伺服器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop237:19888/hadoop/jobhistory/logs</value>
</property>
<!-- 設定日誌保留時間為30天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>2592000</value>
</property>
</configuration>
4. mapred-site.xml
<configuration>
<!-- 指定MR執行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 歷史伺服器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop237:10020</value>
</property>
<!-- 歷史伺服器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop237:19888</value>
</property>
</configuration>
5. workers
hadoop236
hadoop237
hadoop238
6. 配置環境變數和啟動使用者許可權 /etc/profile.d/bigdata.sh
export HADOOP_HOME=/data/soft/modules/hadoop-3.0.0
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
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
7. 拷貝程式碼
8. 格式化和啟動、檢視、環境測試
hdfs namenode -format # 在hadoop236上執行(檢視core-site.xml配置)
start-dfs.sh
start-yarn.sh # 在hadoop238上執行(檢視yarn-site.xml配置)
- 檢視hdfs UI
http://hadoop236:9870/
- 檢視yarn UI
http://hadoop238:8088/cluster
注意resourcemanager所在機器上機器和檢視
hadoop jar /data/soft/modules/hadoop-3.0.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar wordcount /testdir/input/demo01/wordcount /testdir/output/demo01/wordcount
9. 配置歷史伺服器,方便檢視job的執行狀況 mapred-site.xml
<!-- 歷史伺服器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop237:10020</value>
</property>
<!-- 歷史伺服器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop237:19888</value>
</property>
10. 分發程式碼、啟動歷史伺服器、UI檢視
mapred --daemon start historyserver # 在hadoop237上執行
- 查詢任務歷史日誌
http://hadoop237:19888/jobhistory
注意在hadoop237上執行啟動命令mapred --daemon start historyserver
11. 配置yarn日誌收集到hdfs yarn-site.xml
<!-- 開啟日誌聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 設定日誌聚集伺服器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop237:19888/hadoop/jobhistory/logs</value>
</property>
<!-- 設定日誌保留時間為30天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>2592000</value>
</property>
12. 重啟yarn和歷史日曆服務
mapred --daemon stop historyserver # 在hadoop237上執行 mapred-site.xml
stop-yarn.sh # 在resourcemanager所在機器上執行(yarn-site.xml指定)
三、hive環境配置
3.1 配置系統環境
export HIVE_HOME=/opt/module/hive-2.3.7
export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/sbin
3.2 處理log4j衝突
# 防止日誌衝突
mv lib/log4j-slf4j-impl-2.6.2.jar lib/log4j-slf4j-impl-2.6.2.jar.bak
3.3 安裝hive元資訊儲存庫:mysql5.7
mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
create database hiveDB_metastore charset=utf8;
3.4 新增mysql連線驅動
# 將mysql-jdbc驅動放到 hive/lib下
3.5 修改hive-site.xml配置
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc 連線的 URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop102:3306/hiveDB_metastore?useSSL=false</value>
</property>
<!-- jdbc 連線的 Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- jdbc 連線的 username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- jdbc 連線的 password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
<!-- Hive 元資料儲存版本的驗證 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!--元資料儲存授權-->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
<!-- Hive 預設在 HDFS 的工作目錄 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/hive/warehouse</value>
</property>
<property>
<name>hive.execution.engine</name>
<value>spark</value>
</property>
<!-- 使用 JDBC 方式訪問 Hive; 指定 hiveserver2 連線的 host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>hdp232</value>
</property>
<!-- 指定 hiveserver2 連線的埠號 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
</configuration>
3.6 初始化元資料配置表
schematool -initSchema -dbType mysql -verbose
3.7 啟動hive服務(可用jdbc連線)
bin/hive --service hiveserver2