deepin 安装 hive

打印 上一主题 下一主题

主题 906|帖子 906|积分 2718

deepin 安装 hive



  • 安装 hadoop
  • 安装 mysql
  • 安装 hive

准备

HDFS设置

  1. vim $HADOOP_HOME/etc/hadoop/core-site.xml
复制代码
  1.   <!--配置所有节点的lhz用户都可作为代理用户-->
  2.   <property>
  3.     <name>hadoop.proxyuser.lhz.hosts</name>
  4.     <value>*</value>
  5.   </property>
  6.   <!--配置lhz用户能够代理的用户组为任意组-->
  7.   <property>
  8.     <name>hadoop.proxyuser.lhz.groups</name>
  9.     <value>*</value>
  10.   </property>
  11.   <!--配置lhz用户能够代理的用户为任意用户-->
  12.   <property>
  13.     <name>hadoop.proxyuser.lhz.users</name>
  14.     <value>*</value>
  15.   </property>
复制代码
启动Hadoop

  1. # 启动hadoop
  2. start-hadoop.sh
  3. # 检查hadoop进程
  4. jps
  5. # 检查各端口
  6. netstat -aplnt | grep java
复制代码
安装MySQL

创建MySQL用户和用户组

  1. sudo groupadd mysql
复制代码
  1. sudo useradd -r -g mysql -s /bin/false mysql
复制代码
下载MySQL安装包

  1. wget https://cdn.mysql.com//Downloads/MySQL-9.1/mysql-9.1.0-linux-glibc2.28-x86_64.tar.xz
复制代码
解压缩MySQL安装包

  1. sudo tar -xvf mysql-9.1.0-linux-glibc2.28-x86_64.tar.xz
复制代码
移动安装包到指定目录

  1. sudo mv mysql-9.1.0-linux-glibc2.28-x86_64 /usr/local/mysql
复制代码
创建链接符号目录

  1. sudo mkdir /usr/local/mysql/mysql-files
复制代码
修改目录所属

  1. sudo chown -R mysql:mysql /usr/local/mysql
复制代码
链接符号目录授权

  1. sudo chmod 750 /usr/local/mysql/mysql-files
复制代码
设置环境变量

   暂时环境变量
  1. export PATH=$PATH:/usr/local/mysql/bin
复制代码
  永久环境变量
  1. sudo vim /etc/profile
复制代码
  末尾追加以下内容
  1. export PATH=$PATH:/usr/local/mysql/bin
复制代码
初始化数据库

  1. sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql
复制代码
  留意:MySQL初始密码会打印在控制台上
  比方:[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: .mT/UTw%<5&=
  启动MySQL

  1. sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &
复制代码
修改MySQL root用户密码和授权可访问主机

   打开新的控制台实行以下命令
  1. sudo /usr/local/mysql/bin/mysql -uroot -p
复制代码
  根据提示输入之前打印在控制台上的MySQL初始密码
留意:第一次输入可能是利用系统用户密码
    修改 root 用户密码为 lihaozhe
  1. alter user 'root'@'localhost' IDENTIFIED BY 'lihaozhe';
  2. flush privileges;
复制代码
  授权任意主机皆可访问
  1. update mysql.user set host = '%' where user = 'root';
  2. flush privileges;
复制代码
  退出MySQL
  1. exit;
复制代码
设置MySQL服务

   在新的控制台实行以下命令
  1. sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.server
复制代码
  控制 MySQL 可以利用 以下命令
  sudo systemctl start mysql
  sudo systemctl stop mysql
  sudo systemctl restart mysql
  sudo systemctl reloead mysql
  大概
  sudo service mysql.server start

  sudo service mysql.server stop
  sudo service mysql.server restart
  sudo service mysql.server reloead
  测试

   重启利用系统
  手动开启MySQL服务

  1. sudo systemctl start mysql
复制代码
  大概
  1. sudo service mysql.server start
复制代码
登录MySQL

   利用自界说密码登录
  1. mysql -uroot -p
复制代码
安装hive


  1. # 将软件上传到 /home/lhz/opt 目录
  2. wget https://dlcdn.apache.org/hive
  3. /hive
  4. -4.0.1/apache-hive
  5. -4.0.1-bin.tar.gz
  6. # 解压hive
  7. tar -zxvf apache-hive
  8. -4.0.1-bin.tar.gz
  9. # 目录改名
  10. mv apache-hive
  11. -4.0.1-bin hive
  12. -4
  13. # 进入配置文件目录
  14. cd /home/lhz/opt/hive
  15. -4/conf
  16. # 编辑环境配置文件
  17. vim hive
  18. -env.sh
  19. # 编辑配置文件
  20. vim hive
  21. -site.xml
复制代码
hive
-env.sh


   hadoop 安装路径 export HADOOP_HOME=/home/lhz/opt/hadoop-3/
  hive
设置文件路径 export HIVE_CONF_DIR=/home/lhz/opt/hive
-4/conf/****
  1. export HADOOP_HOME=/home/lhz/opt/hadoop-3/
  2. export HIVE_CONF_DIR=/home/lhz/opt/hive
  3. -4/conf/
复制代码
hive
-site.xml


   必要修改的位置提炼如下:
  1. <configuration>
  2.   <!-- 记录HIve中的元数据信息  记录在mysql中 -->
  3.   <property>
  4.     <name>javax.jdo.option.ConnectionURL</name>
  5.     <value>jdbc:mysql://lihaozhe:3306/hive
  6. ?allowPublicKeyRetrieval=true&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=UTF8&amp;useSSL=false&amp;useServerPrepStmts=false&amp;rewriteBatchedStatements=true&amp;cachePrepStmts=true&amp;allowMultiQueries=true&amp;serverTimeZone=Asia/Shanghai&amp;sslMode=DISABLED</value>
  7.   </property>
  8.   <!-- jdbc mysql驱动 -->
  9.   <property>
  10.     <name>javax.jdo.option.ConnectionDriverName</name>
  11.     <value>com.mysql.cj.jdbc.Driver</value>
  12.   </property>
  13.   <!-- mysql的用户名和密码 -->
  14.   <property>
  15.     <name>javax.jdo.option.ConnectionUserName</name>
  16.     <value>root</value>
  17.   </property>
  18.   <property>
  19.     <name>javax.jdo.option.ConnectionPassword</name>
  20.     <value>lihaozhe</value>
  21.   </property>
  22.   <property>
  23.     <name>hive
  24. .metastore.warehouse.dir</name>
  25.     <value>/user/hive
  26. /warehouse</value>
  27.   </property>
  28.   <property>
  29.     <name>hive
  30. .exec.scratchdir</name>
  31.     <value>/user/hive
  32. /tmp</value>
  33.   </property>
  34.   <property>
  35.     <name>hive
  36. .exec.local.scratchdir</name>
  37.     <value>/home/lhz/data/hive
  38. /local</value>
  39.     <description>Local scratch space for Hive jobs</description>
  40.   </property>
  41.   <property>
  42.     <name>hive
  43. .downloaded.resources.dir</name>
  44.     <value>/home/lhz/data/hive
  45. /resources</value>
  46.     <description>Temporary local directory for added resources in the remote file system.</description>
  47.   </property>
  48.   <!-- 日志目录 -->
  49.   <property>
  50.     <name>hive
  51. .querylog.location</name>
  52.     <value>/user/hive
  53. /log</value>
  54.   </property>
  55.   <!-- 设置metastore的节点信息 -->
  56.   <property>
  57.     <name>hive
  58. .metastore.uris</name>
  59.     <!--<value>thrift://lihaozhe03:9083</value>-->
  60.     <value/>
  61.   </property>
  62.   <!-- 客户端远程连接的端口 -->
  63.   <property>
  64.     <name>hive
  65. .server2.thrift.port</name>
  66.     <value>10000</value>
  67.   </property>
  68.   <property>
  69.     <name>hive
  70. .server2.thrift.bind.host</name>
  71.     <value>0.0.0.0</value>
  72.   </property>
  73.   <property>
  74.     <name>hive
  75. .server2.webui.host</name>
  76.     <value>0.0.0.0</value>
  77.   </property>
  78.   <!-- hive
  79. 服务的页面的端口 -->
  80.   <property>
  81.     <name>hive
  82. .server2.webui.port</name>
  83.     <value>10002</value>
  84.   </property>
  85.   <property>
  86.     <name>hive
  87. .server2.long.polling.timeout</name>
  88.     <value>5000ms</value>
  89.   </property>
  90.   <property>
  91.     <name>hive
  92. .server2.enable.doAs</name>
  93.     <value>true</value>
  94.   </property>
  95.   <!--
  96.   <property>
  97.   <name>datanucleus.autoCreateSchema</name>
  98.   <value>false</value>
  99.   </property>
  100.   <property>
  101.   <name>datanucleus.fixedDatastore</name>
  102.   <value>true</value>
  103.   </property>
  104.   -->
  105.   <property>
  106.     <name>hive
  107. .execution.engine</name>
  108.     <value>mr</value>
  109.   </property>
  110.   <property>
  111.     <name>hive
  112. .metastore.schema.verification</name>
  113.     <value>false</value>
  114.   </property>
  115.   <property>
  116.     <name>hive
  117. .server2.logging.operation.log.location</name>
  118.     <value>/home/lhz/data/hive
  119. /tmp/operation_logs</value>
  120.   </property>
  121. </configuration>
复制代码
  留意:上面设置文件中的路径在 vi 编辑器下 全局替换 本案例已经替换过了无需实行
  1. :%s@\${system:java.io.tmpdir}@/tmp/hive
  2. -log@g
复制代码
不要利用图形化 不然每次生存后3215行都会有个 &#8 特殊字符 如果产生删除即可 详细报错信息 后面有单独的形貌
  设置环境变量

  1. vim /home/lhz/.bashrc
复制代码
  1. export HIVE_HOME=/home/lhz/opt/hive
  2. -4
  3. export HCATALOG_HOME=/home/lhz/opt/hive
  4. -4/hcatalog
  5. export PATH=$PATH:$HIVE_HOME/bin:$HCATALOG_HOME/bin:$HCATALOG_HOME/sbin
复制代码
  完备
  1. export JAVA_HOME=/home/lhz/opt/jdk-8
  2. export M2_HOME=/home/lhz/opt/maven
  3. export HDFS_NAMENODE_USER=lhz
  4. export HDFS_SECONDARYNAMENODE_USER=lhz
  5. export HDFS_DATANODE_USER=lhz
  6. export HDFS_ZKFC_USER=lhz
  7. export HDFS_JOURNALNODE_USER=lhz
  8. export HADOOP_SHELL_EXECNAME=lhz
  9. export YARN_RESOURCEMANAGER_USER=lhz
  10. export YARN_NODEMANAGER_USER=lhz
  11. export HADOOP_HOME=/home/lhz/opt/hadoop-3
  12. export HADOOP_INSTALL=$HADOOP_HOME
  13. export HADOOP_MAPRED_HOME=$HADOOP_HOME
  14. export HADOOP_COMMON_HOME=$HADOOP_HOME
  15. export HADOOP_HDFS_HOME=$HADOOP_HOME
  16. export YARN_HOME=$HADOOP_HOME
  17. export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
  18. export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
  19. export HIVE_HOME=/home/lhz/opt/hive
  20. -4
  21. export HCATALOG_HOME=/home/lhz/opt/hive
  22. -4/hcatalog
  23. export SCALA_HOME=/home/lhz/opt/scala-2
  24. export SPARK_HOME=/home/lhz/opt/spark-3
  25. export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin:$SCALA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SPARK_HOME/bin:$SPARK_HOME/sbin:$HIVE_HOME/bin:$HCATALOG_HOME/bin:$HCATALOG_HOME/sbin
复制代码
上传 MySQL 连接驱动 jar 包到 hive
安装目录的lib目录下:


  1. $HIVE_HOME/lib
复制代码
  删除原有的 protobuf-java-3.24.4.jar 文件
  上传 jar 包有两个 分别为:
  

  • mysql-connector-j-9.1.0.jar
  • protobuf-java-4.28.3.jar
  1. rm -f $HIVE_HOME/lib
  2. /protobuf-java-3.24.4.jar
复制代码
guava版本冲突

删除 hive
/lib目录中的 guava-22.0.jar
拷贝hadoop/share/hadoop/common/lib目录中的 guava-27.0-jre.jar 到 hive
/lib 目录
  1. rm -f $HIVE_HOME/lib
  2. /guava-22.0.jarcp -v $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar $HIVE_HOME/lib
复制代码
初始化hive
的元数据库


   留意初始初始元数据库之前 包管 hadoop 和 mysql 正常启动
    推荐现在mysql 手动创建 hive
元数据库
  1. create database hive
  2. default character set utf8;
复制代码
  Linux控制台实行以下命令初始化 hive
元数据库
  1. schematool -initSchema -dbType  mysql -verbose
复制代码
中文乱码

  1. mysql -uroot -p
复制代码
  1. use hive
  2. ;
复制代码
  1. alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
  2. alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
  3. alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
  4. alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
  5. alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
  6. flush privileges;
复制代码
远程模式

  1. hive
  2. --service metastore
  3. hive
  4. --service hive
  5. server2  
  6. # hive
  7. --service hive
  8. server2 与 hive
  9. server2 start 作用相同
  10. # 启动服务端 后台运行
  11. hive
  12. --service metastore &
  13. hive
  14. --service hive
  15. server2 &
  16. # 启动服务端 后台运行
  17. nohup hive
  18. --service metastore > /dev/null 2>&1 &
  19. nohup hive
  20. --service hive
  21. server2 > /dev/null 2>&1 &
复制代码
  bash 中 0、1、2 三个数字分别代表 STDIN_FILENO 、 STDOUT_FILENO 、STDERR_FILENO ,
即标准输入(一般是键盘),
标准输出(一般是显示屏,准确的说是用户终端控制台),
标准错误(输出错信息输出)。
  数字寄义0标准输入(一般是键盘)1标准输出(一般是显示屏,准确的说是用户终端控制台)2标准错误(输出错信息输出)   /dev/null看作"黑洞". 它等价于一个只写文件.
全部写入它的内容都会永久丢失.
而实验从它那儿读取内容则什么也读不到
  启动hive
脚本


   start-hive
.sh
  1. nohup hive
  2. --service metastore > /dev/null 2>&1 &
  3. nohup hive
  4. --service hive
  5. server2 > /dev/null 2>&1 &
复制代码
  为脚本添加可实行权限
  1. chmod +x start-hive
  2. .sh
复制代码
  分发启动脚本
  1. mv start-hive
  2. .sh /home/lhz/opt/hive
  3. -4/bin/
复制代码
客户端连接

beeline 连接

  1. beeline -u jdbc:hive
  2. 2://lihaozhe:10000 -n root
复制代码
beeline 连接参数

  1. Option Description  
  2. --autoCommit=[true/false] ---进入一个自动提交模式:beeline --autoCommit=true  
  3. --autosave=[true/false]   ---进入一个自动保存模式:beeline --autosave=true  
  4. --color=[true/false]    ---显示用到的颜色:beeline --color=true  
  5. --delimiterForDSV= DELIMITER ---分隔值输出格式的分隔符。默认是“|”字符。  
  6. --fastConnect=[true/false]  ---在连接时,跳过组建表等对象:beeline --fastConnect=false  
  7. --force=[true/false]    ---是否强制运行脚本:beeline--force=true  
  8. --headerInterval=ROWS   ---输出的表间隔格式,默认是100: beeline --headerInterval=50  
  9. --help ---帮助  beeline --help  
  10. --hive
  11. conf property=value  ---设置属性值,以防被hive
  12. .conf.restricted.list重置:beeline --hive
  13. conf prop1=value1   
  14. --hive
  15. var name=value   ---设置变量名:beeline --hive
  16. var var1=value1  
  17. --incremental=[true/false]  ---输出增量
  18. --isolation=LEVEL  ---设置事务隔离级别:beeline --isolation=TRANSACTION_SERIALIZABLE  
  19. --maxColumnWidth=MAXCOLWIDTH ---设置字符串列的最大宽度:beeline --maxColumnWidth=25  
  20. --maxWidth=MAXWIDTH ---设置截断数据的最大宽度:beeline --maxWidth=150  
  21. --nullemptystring=[true/false]  ---打印空字符串:beeline --nullemptystring=false  
  22. --numberFormat=[pattern]     ---数字使用DecimalFormat:beeline --numberFormat="#,###,##0.00"  
  23. --outputformat=[table/vertical/csv/tsv/dsv/csv2/tsv2] ---输出格式:beeline --outputformat=tsv   
  24. --showHeader=[true/false]   ---显示查询结果的列名:beeline --showHeader=false  
  25. --showNestedErrs=[true/false] ---显示嵌套错误:beeline --showNestedErrs=true  
  26. --showWarnings=[true/false] ---显示警告:beeline --showWarnings=true  
  27. --silent=[true/false]  ---静默方式执行,不显示执行过程信息:beeline --silent=true  
  28. --truncateTable=[true/false] ---是否在客户端截断表的列     
  29. --verbose=[true/false]  ---显示详细错误信息和调试信息:beeline --verbose=true  
  30. -d <driver class>  ---使用一个驱动类:beeline -d driver_class  
  31. -e <query>  ---使用一个查询语句:beeline -e "query_string"  
  32. -f <file>  ---加载一个文件:beeline -f filepath  多个文件用-e file1 -e file2
  33. -n <username>  ---加载一个用户名:beeline -n valid_user  
  34. -p <password>  ---加载一个密码:beeline -p valid_password  
  35. -u <database URL> ---加载一个JDBC连接字符串:beeline -u db_URL
复制代码
hive
连接


  1. hive
复制代码
  启动客户端后连接
  1. !connect jdbc:hive
  2. 2://lihaozhe:10000 -n root
复制代码
浏览器访问

   http://lihaozhe:10002/
  

关闭 hive
脚本


   编写 stop-hive
.sh 脚本 kill 掉后台 RunJar 进程
  1. #!/bin/bash  
  2. # 查找并杀死所有 RunJar 进程  
  3. pids=$(ps -ef | grep RunJar | grep -v grep | awk '{print $2}')  
  4. # 检查是否有找到任何 PID
  5. if [ -n "$pids" ]; then
  6.     # 按行kill并输出
  7.     for pid in $pids; do
  8.             echo "Killing the following RunJar processes PID: $pid"
  9.         kill -9 $pid
  10.     done
  11. else
  12.     echo "No RunJar processes found."
  13. fi
复制代码
  脚本添加可实行权限
  1. chmod +x stop-hive
  2. .sh
复制代码
  分发脚本
  1. mv stop-hive
  2. .sh /home/lhz/opt/hive
  3. -4/bin/
复制代码
体验

  1. use default;
  2. create table person (
  3.         id int,
  4.     phonenum bigint,
  5.     salary dicimal,
  6.     name string
  7. );
  8. show tables;
  9. insert into person values (1001,13966668888,9999.99,"张三");
复制代码
  1. songsong,bingbing_lili,xiao song:18_xiaoxiao song:19
  2. longlong,pingping_liuliu,xiao long:8_xiaoxiao long:9
复制代码
  1. drop table person;
  2. create table person (
  3.     name string,
  4.     friends array<string>,
  5.     childrens map<string,int>
  6. )
  7. row format delimited fields terminated by ','
  8. collection items terminated by '_'
  9. map keys terminated by ':'
  10. lines terminated by '\n';
复制代码
  1. load data local inpath  '/root/person.txt' into table person;
复制代码
  1. drop table data;
  2. create table data (
  3.     name string,
  4.            amount int
  5. )
  6. row format delimited fields terminated by ','
  7. lines terminated by '\n';
  8. load data local inpath  '/root/data.txt' into table data;
复制代码
  1. select count(*) from data;
  2. select count(*) from data group by name;
  3. select name,max(t) from data group by name;
  4. select name,max(t) from data group by name order by max(t) ;
复制代码
  1. # 本地set mapreduce.framework.name=local;set hive
  2. .exec.mode.local.auto=true;# yarnset mapreduce.framework.name=yarn;set hive
  3. .exec.mode.local.auto=false;# 向量模式set hive
  4. .vectorized.execution.enabled=true;set hive
  5. .vectorized.execution.enabled=false;set mapreduce.framework.name=local;set hive
  6. .exec.mode.local.auto=true;set hive
  7. .vectorized.execution.enabled=true;
复制代码
t
)
row format delimited fields terminated by ‘,’
lines terminated by ‘\n’;
load data local inpath ‘/root/data.txt’ into table data;
  1. ```sqlselect count(*) from data;
  2. select count(*) from data group by name;
  3. select name,max(t) from data group by name;
  4. select name,max(t) from data group by name order by max(t) ;
复制代码
  1. # 本地set mapreduce.framework.name=local;set hive
  2. .exec.mode.local.auto=true;# yarnset mapreduce.framework.name=yarn;set hive
  3. .exec.mode.local.auto=false;# 向量模式set hive
  4. .vectorized.execution.enabled=true;set hive
  5. .vectorized.execution.enabled=false;set mapreduce.framework.name=local;set hive
  6. .exec.mode.local.auto=true;set hive
  7. .vectorized.execution.enabled=true;
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我可以不吃啊

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表