Hive源码学习【1】——Windows WSL Hive3.x安装与调试(1)
准备
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命令行输入测试命令即可进行源码调试
- 点赞
- 收藏
- 关注作者
评论(0)