#第十六天 - Sqoop工具使用 - Hadoop、Hive、Sqoop常见问题 - 数据可视化工具ECharts
#####导入至HDFS
#####导入至Hive
###二、Sqoop从Mysql导数据到Hive部分参数
#####数据来源
整表导出 --table
导出表中的某几列 --columns
查询语句(多表联查 - 条件查询) --query
出现条件时需要使用and $CONDITIONS
#####目标
1.HDFS(--target-dir)(默认分隔符:逗号) - 执行MapReduce后得到结果,读取结果文件,export
--delete-target-dir:导出前先删除目标目录(会自动检验是否存在)
数据文件输出格式:Output line formatting arguments
--fields-terminated-by 数据库表不同字段之间的数据分隔符
--lines-terminated-by 数据库表不同条目之间的数据分隔符
2.Hive,通过hql或HiveJDBC获取结果,export
注:在Hive中自动创建(默认内部表) – 导入到已创建的表
--hive-import 以Hive的方式进行导入
--hive-database 导入到指定的Hive库中
--external-table-dir 以外部表的形式创建
--hive -table 导入到指定的Hive表中
--hive-overwrite 是否覆盖导入
--create-hive-table 在Hive中创建表 - 只包含结构信息
sqoop import
–connect jdbc:mysql://SZ01:3306/w01
–username root
–password root
–table make
–hive-import
–hive-database default
–hive-table make1
-m 1
执行sqoop导入命令
连接信息(从mysql数据库中导出、主机名、端口、库名)
用户名
密码
要导出的表
导入到hive
要导入到hive中的default库
要导入到make1表
使用1个map task执行导入操作
运行时会出现以下错误:
Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.
注:该错误会在Sqoop1.4.7版本中出现
解决办法:
在环境变量中添加以下语句
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
刷新环境变量文件
source .bash_profile
运行成功后在hive中无法找到该表
在hive中无法找到该表的原因如下:
解决办法:将hive-site.xml复制到sqoop中
cp /home/bigdata/apache-hive-1.2.2-bin/conf/hive-site.xml /home/bigdata/sqoop-1.4.7.bin/conf/
###三、sqoop从文本读取执行命令
编辑要读取命令的文件:
vi sqoopCmd
--connect
jdbc:mysql://192.168.128.121:3306/w01
--username
root
--password
root
--query
'select * from make where id < 10 and $CONDITIONS'
--target-dir
/tmp/make
--delete-target-dir
--hive-import
--hive-database
default
--hive-table
make2
--hive-overwrite
-m
1
执行命令
命令格式sqoop {cmd} --options-file {fileName}
sqoop import --options-file sqoopCmd
效果
###四、Hadoop、Hive、Sqoop常见问题
#####Hadoop
节点启动失败
报错信息:address already in use - bind Address:50070
解决步骤:
报错信息(namenode):could not find dir:xxx,找不到namenode格式化产生的路径
解决方法:
格式化namenode:
hdfs namenode -format
每次格式化时都会产生新的集群id -> clusterID
保存信息的文件位于/home/bigdata/hadoop/data/dfs/name/current/VERSION
报错信息(datanode):could not find dir:xxx,找不到datanode的路径
保存信息的文件位于/home/bigdata/hadoop/data/dfs/dn/current/VERSION
解决办法:
删除之前遗留的信息:dn
手动修改VERSION中的版本信息,使得一致
要求输入密码
解决办法:
配置免密码登录(包括启动脚本的机器)
获取SZ01的公钥(公钥只需获取一次即可)
ssh-keygen -t rsa
在此过程中使用默认配置即可,即一路回车直到生成RSA文件
将SZ01的公钥发送给所有集群机器(包括自身),发送时需要输入密码
ssh-copy-id bigdata@SZ01
ssh-copy-id bigdata@SZ02
ssh-copy-id bigdata@SZ03
进程启动成功后消失
查看启动日志根据日志处理错误。可以尝试重启节点,关闭防火墙
操作HDFS
报错信息:permission denied,权限不足
解决办法:
报错信息:无法建立通信,端口8020
解决办法:保证hdfs进程启动
运行MapReduce
注:MapReduce以队列的方式进行
杀死MapReduce运行进程的命令:
hadoop job -kill {jobId}
MapReduce的日志位置:
(1)通过web的管理界面查看
(2)$HADOOP_HOME/logs/userlogs下有相应的三个日志文件
报错信息(远程调用执行)
权限不足
原因:中间结果的临时目录无相关权限
解决办法:赋予该临时目录相应的权限
hdfs dfs -chmod -R 777 /tmp
结果输出目录已经存在,解决办法:重新指定一个不存在的结果输出目录
源数据目录不存在,解决办法:指定正确的源数据目录
逻辑错误
accept阶段卡住不动,解决办法:防火墙关闭
#####Hive
Hive的日志文件位置:在conf中指定的目录及文件名
/home/${user.home}
hive.log
错误提示:parseException
这种错误是在配置文件中配置项出错,会提示比较完整的错误位置信息,根据信息找到目标行/列修正即可
JDBC相关异常,启动过程中读取配置文件打开MySQL,检查报错信息,MySQL是否启动
MySQL数据库密码修改。在MySQL中,是根据host和user唯一确定的用户的密码(联合主键的方式实现)
密码验证信息存放位置:mysql.user表中host,password,user,password_expired,权限相关
修改密码方式:
方式一:直接修改表 -> update mysql.user set password = password(‘xxx’) where host = ‘xx’ and user = ‘xx’
方式二:set password = password(‘root’);此命令默认修改当前连接进入的密码,但是可以通过参数修改其他用户的密码
添加或修改一条连接规则:
GRANT ALL PRIVILEGES ON . to ‘user’@‘host’ IDENTIFIED by ‘root’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
ClassNotFountException:com.mysql.jdbc.Driver
解决方法:拷贝驱动jar包至$HIVE_HOME/lib
Hive客户端或HiveJDBC操作Hive
远程操作
return code 1,原因是/tmp/hadoop-yarn/staging/anonymous权限不足
解决方法:修改该文件夹的权限
hdfs dfs -chmod -R 777 /tmp/hadoop-yarn/staging/anonymous
sqoop import
–connect jdbc:mysql://localhost:3306/w01
–username root
–password root
–table make
–hive-import
–hive-database default
–hive-table make1
-m
原因:连接mysql的jdbc中主机名不能为localhost,必须是ip地址或者是主机名(hosts中配置的)
sqoop import
–connect jdbc:mysql://SZ01:3306/w01
–username root
–password root
–table make
–hive-import
–hive-database default
–hive-table make1
-m
###五、数据可视化工具ECharts
网址:echarts.baidu.com
ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。
ECharts 提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。
从官网下载js文件,点击下载
将js文件导入到项目中