赞
踩
需要使用hive远程debug,尝试使用无hadoop部署hive方式一直失败,无果,还是使用有hadoop方式。最终查看linux内存占用6GB
,还在后台运行docker的mysql(bitnami/mysql:8.0
),基本满意。
版本选择:
(1)hive2 hadoop2 和hive3和hadoop3需要搭配使用,不能像chd的hive2和hadoop3搭配使用,容易出现问题。
本文选择版本,都是官网推荐的版本:
hadoop-3.3.6.tar.gz
apache-hive-3.1.3-bin.tar.gz
# hadoop缩写hdp
useradd hdp
groupadd hadoop
后边启动hadoop不能用root用户。
su hdp && cd .ssh
ssh-keygen
# 一路回车
cat id_rsa.pub >> authorized_keys
vi /etc/hosts
# localhost 行后追加 hdp
# 配置后测试下
ssh hdp
ssh localhost
hadoop官网
下载安装包
本文hadoop安装路径:/opt/hadoop-3.3.6
# 解压
tar -xvf hadoop-3.3.6.tar.gz
# 改名字
mv ... hadoop-3.3.6
# 加个软连接
cd hadoop-3.3.6
ln -s etc/hadoop conf
修改hadoop-env.sh
export HADOOP_LOG_DIR=${HADOOP_HOME}/logs
export HADOOP_CLIENT_OPTS="-Xmx2048m $HADOOP_CLIENT_OPTS"
修改core-site.xml
,添加:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hdp:9000</value> <description>hdfs内部通讯访问地址</description> </property> <property> <name>hadoop.tmp.dir</name> <!--临时文件目录需要自己建立--> <value>/var/hadoop/tmp</value> </property> <property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property> </configuration>
修改hdfs-site.xml,添加:
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>/var/hadoop/data/namenode</value> <description> namenode 存放name table(fsimage)本地目录需要修改,如果没有需要自己创建文件目录)</description> </property> <property> <name>dfs.datanode.data.dir</name> <value>/var/hadoop/data/datanode</value> <description>datanode存放block本地目录(需要修改,如果没有需要自己创建文件目录)</description> </property> <property> <!--由于只有一台机器,hdfs的副本数就指定为1--> <name>dfs.replication</name> <value>1</value> </property> </configuration>
修改yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>2048</value> </property> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>2048</value> </property> <property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>2.1</value> </property> <property> <name>mapred.child.java.opts</name> <value>-Xmx1024m</value> </property> <property> <name>yarn.application.classpath</name> <value>/opt/hadoop-3.3.6/conf:/opt/hadoop-3.3.6/share/hadoop/common/lib/*:/opt/hadoop-3.3.6/share/hadoop/common/*:/opt/hadoop-3.3.6/share/hadoop/hdfs:/opt/hadoop-3.3.6/share/hadoop/hdfs/lib/*:/opt/hadoop-3.3.6/share/hadoop/hdfs/*:/opt/hadoop-3.3.6/share/hadoop/mapreduce/*:/opt/hadoop-3.3.6/share/hadoop/yarn:/opt/hadoop-3.3.6/share/hadoop/yarn/lib/*:/opt/hadoop-3.3.6/share/hadoop/yarn/*</value> </property> </configuration>
yarn.application.classpath
是使用hadoop classpath
生成的,一定要有此配置。
修改mapred-site.xml
,添加:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
touch init-env.sh
添加如下内容,本文使用的hadoop安装路径的是:/opt/hadoop-3.3.6
:
#!/bin/bash
# 移除老的环境变量
# 如果本机已经安装过hadoop一定要注意,将旧hadoop环境变量移除,可以使用printenv 或者env 查看已经有的环境变量
unset HADOOP_HDFS_HOME
unset HADOOP_YARN_HOME
unset HADOOP_CLASSPATH
unset HADOOP_MAPRED_HOME
unset HADOOP_HOME
unset HADOOP_CONF_DIR
# 添加新的环境变量
export HADOOP_HOME=/opt/hadoop-3.3.6
export HADOOP_CONF_DIR=$HADOOP_HOME/conf
export HADOOP_LOG_DIR=/var/hadoop/log
export PATH=$HADOOP_HOME/bin:$PATH
加载环境变量
source init-env.sh
# 测试下:
env
echo $HADOOP_HOME
echo $HADOOP_CONF_DIR
启动hadoop
chown -R hdp:hadoop $HADOOP_HOME
# 必须使用非root账户登录
su hdp
$HADOOP_HOME/sbin/start-all.sh
# 使用jps查看下java进程情况:
NameNode
ResourceManager
NodeManager
SecondaryNameNode
DataNode
hdfs web
yarn web
使用命令行确认下hdfs和yarn是否可用:
hdfs dfs -mkdir /tmp
hdfs dfs -ls /
yarn application -list
本文hive安装位置:/opt/hive-3.1.3/
hive官网
tar -xvf apache-hive-3.1.3-bin.tar.gz
mv ... hive-3.1.3
cd hive-3.1.3 && mkdir logs
cp hive-env.sh.template hive-env.sh
touch hive-site.xml
# 不手动添加的话,hive不打印日志!!!
cp hive-log4j2.properties.template hive-log4j2.properties
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties
修改hive-env.sh
HADOOP_HOME=/opt/hadoop-3.3.6
修改hive-site.xml
,添加:
本文hive使用mysql作为metastore,提前在mysql中创建好数据库hive3_local
<!-- 数据库连接JDBC的URL地址,& 是urlencode后的表达--> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://mysql-ip:3306/hive3_local?createDatabaseIfNotExist=true&useSSL=false</value> </property> <!-- 数据库连接driver,即MySQL驱动--> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <!-- MySQL数据库用户名--> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <!-- MySQL数据库密码--> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>密码</value> </property> <property> <!--hive表在hdfs的位置--> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> <property> <name>hive.security.authorization.enabled</name> <value>false</value> </property> <property> <name>hive.security.authorization.createtable.owner.grants</name> <value>ALL</value> </property> <property> <name>hive.server2.enable.doAs</name> <value>false</value> </property>
touch init-env.sh
添加如下内容
#!/bin/bash
export HIVE_HOME=/opt/hive-3.1.3
export HIVE_CONF_DIR=$HIVE_HOME/conf
export PATH=$HIVE_HOME/bin:$PATH
加载hive环境变量。
source init-env.sh
初始化metastore
把数据库jdbc驱动复制到lib目录下,本文是mysql-connector-j-8.0.31.jar
# 进入hive的bin目录
./schematool -dbType mysql -initSchema
配置hive启动脚本
touch start-all.sh
添加如下内容:
#!/bin/bash
nohup $HIVE_HOME/bin/hive --service metastore &
nohup $HIVE_HOME/bin/hive --service hiveserver2 &
启动hive,注:一定要确保hadoop已经成功启动,才能启动hive,否则连接hive beeline会卡死但是不报错!!!
chown -R hdp:hadoop $HIVE_HOME
su hdp
source /opt/hadoop-3.3.6/conf/init-env.sh
source /opt/hive-3.1.3/conf/init-env.sh
sh start-all.sh
beeline链接hive
beeline
# 输入`!verbose`,设置打印日志verbose
!verbose
# 使用hive用户登录,不输入密码直接回车。
beeline -u jdbc:hive2://localhost:10000 hive
hadoop和hive单机部署
Hive2 新版连接工具 beeline 详解
找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
DBeaver连接Hive错误总结
User: hadoop is not allowed to impersonate anonymous
return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
hive设置权限
hive 入门 修改hive日志路径
Hadoop常见端口号及配置文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。