MySQL安装 ①官网下载mysql-server(yum安装) wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm 若wget不可用,下载安装wget:yum -y install wget ②解压rpm -ivh mysql-community-release-el7-5.noarch.rpm ③安装yum install mysql-community-server ④重启mysql服务:service mysqld restart (以后开机不需启动mysql) ⑤进入mysql:mysql -u root 为root用户设置密码root:mysql> set password for ‘root’@‘localhost’ =password(‘root’); 以下步骤可选: 配置文件/etc/my.cnf加上编码配置:[mysql] default-character-set =utf8 远程连接设置: 把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户: mysql> grant all privileges on . to root@’ %‘identified by ‘root’; mysql>flush privileges; 刷新权限 如果是新用户而不是root,则要先新建用户: mysql>create user ‘username’@’ %’ identified by ‘password’;
卸载MySQL 重新安装mysql之前需彻底清除mysql。 ①查看是否有安装的mysql:rpm -qa |grep -i mysql ②依次卸载mysql各安装包:rpm -e --nodeps 安装包名字 ③查看残留的mysql目录或文件:find / -name mysql 、 whereis mysql。 ④依次删除查询出的各目录:rm -rf 目录名 ⑤删除mysql 配置文件:/usr/my.cnf、 /root/.mysql_sercret。
注: ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES) root用户密码错误
Hive安装与配置 ①下载压缩包 官网下载地址:http://mirror.bit.edu.cn/apache/hive/ 选择apache-hive-2.3.4-bin.tar.gz,在Windows里面下载。
②将压缩包从Windows传输到Linux当前目录下¬¬ SecureCRT 【File】→【Connect SFTP Session】开启sftp操作
③解压 解压安装到指定目录下/opt/module(/opt是系统自带目录,之下的/module是自己创建的) 修改解压目录名为hive。
④修改环境变量 修改etc/profile文件,添加HIVE_HOME安装路径。 Source命令更新etc/profile文件,使其生效。
⑤配置hive-env.sh 进入/opt/module/hive/conf目录,修改hive-env.sh.template的文件名为hive-env.sh。(可以使用cp或者mv命令) cp hive-env.sh.template hive-env.sh 修改Hadoop的安装路径 HADOOP_HOME=/opt/module /hadoop-2.7.3 修改Hive的conf目录的路径 export HIVE_CONF_DIR=/opt/module/hive/conf
⑥配置hive-site.xml 进入/opt/module/hive/conf目录,修改default.xml.template的文件名为hive-site.xml。(可以使用cp或者mv命令) cp hive- default.xml.template hive-site.xml 在最后添加以下属性:
<name>javax.jdo.option.ConnectionURL</name>jdbc:mysql://bigdata131:3306/hivedb?createDatabaseIfNotExist=true JDBC connect string for a JDBC metastore
<name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> javax.jdo.option.ConnectionUserName root username to use against metastore database javax.jdo.option.ConnectionPassword root password to use against metastore database注: 查看Hive建库、建表默认的hdfs目录为/user/hive/warehouse hive.metastore.warehouse.dir /user/hive/warehouse location of default database for the warehouse
MySQL Connector/J安装 ①下载压缩包 官网下载地址:http://ftp.ntu.edu.tw/MySQL/Downloads/Connector-J/ mysql-connector-java-5.1.47.tar.gz
②将压缩包从Windows传输到Linux当前目录下 SecureCRT 【File】→【Connect SFTP Session】开启sftp操作
③解压 解压到指定目录下/opt/module(/opt是系统自带目录,之下的/module是自己创建的)
④拷贝驱动包 将驱动包mysql-connector-java-5.1.47-bin.jar复制到/opt/module/hive/lib目录中。
启动hive ①启动Hadoop:start-all.sh ②初始化Metastore架构:schematool -dbType mysql -initSchema ③启动Hive:hive hive> 进入hive shell ④创建/删除/修改/查看 数据库、表、视图,向表中装载数据,查询数据等等。
注: ①启动hive报错:Exception in thread “main” java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: KaTeX parse error: Expected '}', got 'EOF' at end of input: …a.io.tmpdir}/{system:user.name},原因是hive-site.xml里的临时目录没有设置好。 修改 s y s t e m : J a v a . i o . t m p d i r 为 自 己 创 建 的 临 时 目 录 / o p t / m o d u l e / h i v e / t m p 。 < p r o p e r t y > < n a m e > H i v e . e x e c . l o c a l . s c r a t c h d i r < / n a m e > < v a l u e > {system:Java.io.tmpdir}为自己创建的临时目录/opt/module/hive/tmp。 <property> <name>Hive.exec.local.scratchdir</name> <value> system:Java.io.tmpdir为自己创建的临时目录/opt/module/hive/tmp。<property><name>Hive.exec.local.scratchdir</name><value>{system:Java.io.tmpdir}/ s y s t e m : u s e r . n a m e < / v a l u e > < d e s c r i p t i o n > L o c a l s c r a t c h s p a c e f o r H i v e j o b s < / d e s c r i p t i o n > < / p r o p e r t y > < p r o p e r t y > < n a m e > h i v e . d o w n l o a d e d . r e s o u r c e s . d i r < / n a m e > < v a l u e > {system:user.name}</value> <description>Local scratch space for Hive jobs</description> </property> <property> <name>hive.downloaded.resources.dir</name> <value> system:user.name</value><description>LocalscratchspaceforHivejobs</description></property><property><name>hive.downloaded.resources.dir</name><value>{system:java.io.tmpdir}/ h i v e . s e s s i o n . i d r e s o u r c e s < / v a l u e > < d e s c r i p t i o n > T e m p o r a r y l o c a l d i r e c t o r y f o r a d d e d r e s o u r c e s i n t h e r e m o t e f i l e s y s t e m . < / d e s c r i p t i o n > < / p r o p e r t y > < p r o p e r t y > < n a m e > h i v e . s e r v e r 2. l o g g i n g . o p e r a t i o n . l o g . l o c a t i o n < / n a m e > < v a l u e > {hive.session.id}_resources</value> <description>Temporary local directory for added resources in the remote file system.</description> </property> <property> <name>hive.server2.logging.operation.log.location</name> <value> hive.session.idresources</value><description>Temporarylocaldirectoryforaddedresourcesintheremotefilesystem.</description></property><property><name>hive.server2.logging.operation.log.location</name><value>{system:java.io.tmpdir}/ s y s t e m : u s e r . n a m e / o p e r a t i o n l o g s < / v a l u e > < d e s c r i p t i o n > T o p l e v e l d i r e c t o r y w h e r e o p e r a t i o n l o g s a r e s t o r e d i f l o g g i n g f u n c t i o n a l i t y i s e n a b l e d < / d e s c r i p t i o n > < / p r o p e r t y > < p r o p e r t y > < n a m e > h i v e . q u e r y l o g . l o c a t i o n < / n a m e > < v a l u e > {system:user.name}/operation_logs</value> <description>Top level directory where operation logs are stored if logging functionality is enabled</description> </property> <property> <name>hive.querylog.location</name> <value> system:user.name/operationlogs</value><description>Topleveldirectorywhereoperationlogsarestoredifloggingfunctionalityisenabled</description></property><property><name>hive.querylog.location</name><value>{system:java.io.tmpdir}/${system:user.name} Location of Hive run time structured log file
②schematool -dbType mysql -initSchema时报错:Schema initialization FAILED! Metastore state would be inconsistent !! 网上教程都是说在文件头部加上mysql的连接配置,但是hive-site.xml.templat中原本是有derby的配置,这样就会被下面的derby配置覆盖,导致初始化失败。方法就是可以将mysql配置放在最下面,或者删除derby的配置。 删除derby的配置产生的metastore_db目录。
③hive命令(如show databases ,show tables),会报出如下错误:Failed with exception Java.io.IOException:java.lang.IllegalArgumentException: java.NET.URISyntaxException: Relative path in absolute URI: s y s t e m : u s e r . n a m e 找 到 h i v e − s i t e . x m l 的 < n a m e > h i v e . e x e c . l o c a l . s c r a t c h d i r < / n a m e > 的 值 里 面 的 {system:user.name} 找到hive-site.xml的<name>hive.exec.local.scratchdir</name>的值里面的 system:user.name找到hive−site.xml的<name>hive.exec.local.scratchdir</name>的值里面的{system.user.name}改为${user.name}。
Hive应用实例:wordcount ①建数据源文件并上传到hdfs的/user/input目录下 ②建数据源表t1:create table t1 (line string);
③装载数据:load data inpath ‘/user/input’ overwrite into table t1;
④编写HiveQL语句实现wordcount算法,建表wct1保存计算结果: create table wct1 as select word, count(1) as count from (select explode (split (line, ’ ')) as word from t1) w group by word order by word;
⑤查看wordcount计算结果: