Hive源码学习【1】——Windows WSL Hive3.x安装与调试(1)

网友投稿 884 2022-05-30

准备

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配置文件

Hive源码学习【1】——Windows WSL Hive3.x安装与调试(1)

进入hadoop下的etc/hadoop目录分别编辑配置文件。

core-site.xml

       fs.defaultFS     hdfs://localhost:9000           hadoop.tmp.dir     /tmp/hadoop/tmp   

hdfs-site.xml

       dfs.replication     1           dfs.permissions     false           dfs.namenode.name.dir     /tmp/hadoop/namenode           dfs.datanode.data.dir     /tmp/hadoop/datanode           dfs.http.address     localhost:50070   

yarn-site.xml

       yarn.nodemanager.aux-services     mapreduce_shuffle   

mapred-site.xml

       mapreduce.framework.name     yarn   

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命令行会报错   system:java.io.tmpdir   /tmp/hive/java   system:user.name   ${user.name} # MySQL相关配置   hive.metastore.db.type   MYSQL   javax.jdo.option.ConnectionUserName   root   javax.jdo.option.ConnectionPassword   123456   javax.jdo.option.ConnectionDriverName   com.mysql.jdbc.Driver   javax.jdo.option.ConnectionURL   jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false

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命令行输入测试命令即可进行源码调试

表格存储服务 CloudTable EI企业智能 Hive Hadoop 智能数据

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Apache公共网络程序库可行性替换研究
下一篇:在Excel表格中怎么统计名字出现次数
相关文章