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
posted @ 2022-04-19 19:37  UsingStuding  阅读(430)  评论(0)    收藏  举报