1. 程式人生 > 其它 >hadoop3.0 +hive3.x 叢集環境搭建

hadoop3.0 +hive3.x 叢集環境搭建

一、環境清單

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