hive 的安装依赖于hadoop ,上节基于docker的hadoop安装参见https://github.com/lennyhuanga/hadoopwithdocker 所以hive的安装是在hadoop的image基础上进行的。
第一步 完成hadoop的iamge构建 按照https://github.com/lennyhuanga/hadoopwithdocker 完成hadoop 的image 构建
第二步 完成mysql的构建
1、采用mysql5.7,为了docker 源速度,从阿里拉取 docker pull registry.cn-hangzhou.aliyuncs.com/acs-sample/mysql:5.7 2、docker images 查看已存在的镜像 3、重新打tag ,原有tag太长 docker tag registry.cn-hangzhou.aliyuncs.com/acs-sample/mysql:5.7 mysql:5.7 4、构建mysql 容器
docker network ls # 查看docker 所有的网络设置 docker inspect b3b|grep IPAddress # 查看hadoop 所使用的网络设置 docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 --net hadoop -p 3306:3306 -d mysql:5.7
第三步 完成hive的安装和配置 参考https://www.cnblogs.com/liujinhong/p/8795387.html 安装过程 首先 :git clone https://github.com/lennyhuanga/docker-hive 1、hive的安装我们直接使用Dockerfile完成,里边不包括启动 2、所有的配置文件预先改好放在config文件夹 其中mysql-connector-java-5.1.41-bin.jar是连接mysql的jdbc 驱动 再就是注意hive-site.xml 里的相关配置 3、./build-image.sh 构建image 4、./start-container.sh 启动容器 5、进入容器中(默认自动进入了hadoop master节点(hive所在的节点))运行 ./start-hadoop.sh 6、jps 查看hadoop是否启动成功 7、初始化hive的数据源为mysql schematool -dbType mysql -initSchema 8、hive 命令 启动hive 9、sqoop 相关操作参见 https://www.cnblogs.com/guguli/p/4998190.html https://segmentfault.com/a/1190000002532293#articleHeader8 sqoop 从mysql 往hive同步数据 sqoop import -Dorg.apache.sqoop.splitter.allow_text_splitter=true --connect jdbc:mysql://172.19.0.5:3306/testdb --username root --password 123456 --table testtable --fields-terminated-by "\t" --lines-terminated-by "\n" --hive-import --hive-overwrite --create-hive-table --hive-table hivedb.testtable --delete-target-dir
常见错误大全:
1、hive 启动时报 Relative path in absolute URI:
如:
sqoop import -Dorg.apache.sqoop.splitter.allow_text_splitter=true --connect jdbc:mysql://172.19.0.5:3306/testdb --username root --password 123456 --table testtable --fields-terminated-by "\t" --lines-terminated-by "\n" --hive-import --hive-overwrite --create-hive-table --hive-table hivedb.testtable --delete-target-dir
5、Sqoop导入mysql表中的数据到hive,出现如下错误:
ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly. 命令如下: ./sqoop import --connect jdbc:mysql://slave2:3306/mysql --username root --password aaa --table people --hive-import --hive-overwrite --hive-table people --fields-terminated-by '\t'; 解决方法:
往/etc/profile最后加入 export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/* 然后刷新配置,source /etc/profile
6、ERROR Could not register mbeans java.security.AccessControlException: access denied ... 解决方案:https://blog.csdn.net/weixin_39445556/article/details/80802459 将hive-site.xml复制到${SQOOP_HOME}/conf下即可. 方法二: 解决方法:
Just add the following lines to your java.policy file unter <JRE_HOME>/lib/security. grant { permission javax.management.MBeanTrustPermission "register"; };
7、ERROR exec.DDLTask: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.readerFor(Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/ObjectReader;
作者:zhangbcn 来源:CSDN 原文:https://blog.csdn.net/zhangbcn/article/details/83014437 版权声明:本文为博主原创文章,转载请附上博文链接!
把$SQOOP_HOME/lib/jackson*.jar 文件bak, 把对应的$HIVE_HOME/lib/jackson*.jar 对应拷贝到SQOOP/lib 下.
8、sqoop mysql 导入到hive常见错误: http://www.mamicode.com/info-detail-2457770.html