Hive源码学习【1】——Windows WSL Hive3.x安装与调试(1)
【摘要】 本文主要进行Hive/Hadoop的安装配置,最后实现IDEA远程调试Hive代码
准备
Hive-3.1.2安装包和源码包下载
Hadoop-3.2.1安装包下载
Java1.8安装包下载与环境配置
Maven安装包下载
Windows WSL通过Microsoft Store安装(本文安装Ubuntu 18.04 LTS)
MySQL(使用derby可忽略)
IDEA
Hadoop安装与配置
Hadoop环境变量配置
export HADOOP_HOME=/path/to/hadoop-3.2.1 # hadoop解压包的路径
export PATH=$HADOOP_HOME/bin:$PATH
命令行输入hadoop version查看环境是否配置成功
Hadoop配置文件
进入hadoop下的etc/hadoop目录分别编辑配置文件。
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/tmp/hadoop/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/tmp/hadoop/datanode</value>
</property>
<property>
<name>dfs.http.address</name>
<value>localhost:50070</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
hadoop-env.sh
# 直接找到export JAVA_HOME条目,取消注释,或者直接新增行
export JAVA_HOME=/path/to/java
workers文件保持默认的localhost无需改变,即在本地启动一个datanode
执行namenode初始化
hadoop namenode -format
启动hadoop相关组件
./sbin/start-all.sh
可能报错localhost: ssh: connect to host localhost port 22: Connection refused。原因是sshd没有启动,启动sshd
sudo service ssh start
ssh启动过程中可能还会有报错Could not load host key xxx,原因是WSL比较特殊,需要手动生成对应的主机秘钥文件(一般情况openssh安装会自动生成)
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
现在分别生成对应key文件(也可以重装openssh)
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
重启ssh
sudo service ssh restart
之后生成用户秘钥文件
ssh-keygen -t rsa
再将公钥添加到authorized_keys文件(用于实现免密登录localhost)
cat id_rsa.pub > authorized_keys
测试ssh配置是否成功
ssh localhost
至此,再次启动hadoop组件即可。
MySQL安装与配置
MySQL用于作为Hive的metastore数据存储,也可使用默认的derby,则跳过此步骤。
# 安装mysql
sudo apt install mysql-server
sudo apt install mysql-client
# 启动mysql
sudo service mysql start
# 测试登录,mysql5.7默认root用户初始密码为空
mysql -u root
新装MySQL登录root会存在权限问题,解决方法如此博客
Hive安装与配置
Hive环境变量配置
export HIVE_HOME=/path/to/hive
export PATH=$HIVE_HOME/bin:$PATH
Hive配置文件配置
进入hive的conf目录,复制生成hive-site.xml文件
cp hive-default.xml.template hive-site.xml
编辑hive-site.xml文件
# 此项务必配置,否则之后进入hive命令行会报错
<property>
<name>system:java.io.tmpdir</name>
<value>/tmp/hive/java</value>
</property>
<property>
<name>system:user.name</name>
<value>${user.name}</value>
</property>
# MySQL相关配置
<property>
<name>hive.metastore.db.type</name>
<value>MYSQL</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>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false</value>
</property>
MySQL Connector
在Maven仓库下载速度较快,这里使用mysql-connector-java-5.1.38.jar,下载并移至hive的lib目录下
初始化Schema
schematool -dbType mysql -initSchema
# 报错1:java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument
# 原因:hadoop路径下的guava包与hive的lib下的guava包版本冲突
# 解决办法:删除hive的lib下的低版本的guava包
# 报错2:Illegal character entity: expansion character (code 0x8 at [row,col,system-id]: [3215,96,"file:/……/hive-site.xml"]
# 原因:hive-site.xml一些字符不符合xml文档格式规范(一般在description字段)
# 解决办法:根据指示删除相应字符即可
测试Hive(先启动hadoop)
# 进入hive命令行
hive
# 创建表
create table test(id int);
# 退出hive命令行,查看hadoop是否创建相应目录,如果存在/user/hive/warehouse/test说明创建成功
hdfs dfs -ls /user/hive/warehouse
Hive源码编译
maven环境变量配置
export M2_HOME=/path/to/maven
export PATH=$M2_HOME/bin:$PATH
编译Hive项目
# 进入hive源码目录,执行编译
mvn compile -DskipTests
IDEA远程调试配置
IDEA打开Hive项目,Run -> Edit Configurations -> 点击左上角+号,选择Remote ->配置Remote Debug
进入hive debug模式
hive --debug
IDEA启动Remote Debug
Run -> Debug 'Remote-HIVE'
至此,在IDEA设置断点,在hive命令行输入测试命令即可进行源码调试
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)