大数据学习(6)
大数据学习(4)和(5)都是项目案例实战,因为涉及到某次生产实习,所以会在活动结束之后再进行发布。
本次学习主要是了解sqoop的安装、使用,重点是sqoop作为桥梁和hive、hadoop和mysql数据库的使用。因为一些应用的使用如果后台直接用hsql来进行增删改查,那么花费的事件是非常长的,后台的逻辑实现主要是用mysql完成数据库的操作。
0 版本明确
这个操作非常重要!
这个操作非常重要!
这个操作非常重要!
很多教程都忽略了这个问题,或者说找到教程就直接用会引发一系列的问题都是因为没有注重搭建的生产环境版本号。
本次的各个软件版本如下:
- hadoop version 3.3.0
- hive version 3.1.2
- java version 1.8.0
- mysql version 5.7.29
一定要看准版本号,看使用手册里版本号的适应,否则严重情况下就是生产环境直接崩溃。
对于sqoop,选择sqoop version 1.4.7 ,应该是sqoop 1的最后一版本。sqoop 2看其他博主的讲解说有错误不好解决。
1 sqoop 安装
参考博客:
https://blog.youkuaiyun.com/weixin_42065509/article/details/125420496
然后这里出现了一个问题,在final shell中直接传入之后,添加完系统路径,直接在命令行调用sqoop命令时,出现权限不够的问题。这里的第一反应是sudo指令,但是不行。问题解决是在finalshell里设置文件夹权限。
要把执行给勾一下。
另外贴一下相关链接:
sqoop直接下载
mysql connector 的jar包
官网上有的就下载官网,没有的情况下再思考百度云。
2 mysql
2.1 mysql安装
这里的完成主要是在搭建环境时完成,单独列出来是因为后期的mysql数据库肯定得和hive分开,用多台服务器。我在这里是为了测试和最后web的部署,在操作主机(windows)上又搭了一个mysql环境。
2.2 mysql连接
2.2.0 mysql workbench连接
mysql的Windows版本在安装之后是自带一个workbench的,workbench对于mysql的连接是非常方便的,因为它用的是ftp协议,不是jdbc协议,管理数据库可视化操作是非常方便的。
tips:对于数据库的密码一定要记住,不能忘记,或者说忘记之后是非常麻烦的一件事情。
上图可以看到连接到数仓node1节点是可以直接mysql workbench连接的。
2.2.1 mysql第三方连接
2.2.1.1 Datagrip连接 本地机器
注意,在没有对目标mysql进行用户管理之前,你能够进行的操作用户就是root@localhost,用自己的网络ip地址也是不行的。因为这边涉及到用户管理和权力授予,第三方连接在一开始只能够本地登录操作。
如果出现时区设置的问题,要根据数据库的主机时间设置时间。
2.2.1.2 sqoop连接 本地机器
关于连接sqoop命令可以看相关的博客。
测试命令:
sqoop list-databases \
-connect jdbc:mysql://192.168.88.151:3306/ -username root -password hadoop
注意,这里连接到的mysql是hadoop和hive用的底层数据库,即本地的mysql,并不是远程的mysql数据库。
2.2.1.3 sqoop连接 远程机器
2.2.1.3.1 mysql授权
好像centos7 是允许root用户在不同的机器上登录的,就是说作为远程机器是可以直接用root操作的(或者说我使用的是被人设置好的)。只有win版的mysql没有在开始设置。
一开始是发现在win版里无法用sqoop连接到win搭建的mysql,解决参考博客:
这是centos 7的mysql.user里的user,host:
这是win版的mysql.user里的user,host:
在这里创建了一个类似root的超级用户。感觉不如叫root
create user 'ss'@'%' identified by '12345678';
grant ALL privileges on *.* to 'ss'@'%';
2.2.1.3.2 mysql设置时间区
在进行sqoop连接时还报错了时间区。
Mysql:The server time zone value ‘PDT’ is unrecognized
select now();
set global time_zone = '+8:00';
3 sqoop命令
按照这个命令格式来写就行。
【Sqoop】Sqoop的使用(连接MySQL、Hive)