这里的内容是按照我之前发布的Hadoop单节点集群搭建的文章往下继续操作的。
Hadoop单节点集群搭建
一、系统情况
os 版本: Ubuntu 22.04 LTS 64bit
jdk 版本: 1.8.0
hadoop 版本: 3.3.6
mysql 版本: 5.7.21
hive 版本: 3.1.3
二、安装步骤
1、hive的安装与设置
(1)hive的安装:hive-3.1.3下载地址
下载hive 3.1.3,使用以下命令安装到/usr/local
- cd /home/hadoop/Downloads
- tar -zxvf apache-hive-3.1.3-bin.tar.gz
- sudo mv apache-hive-3.1.3-bin /usr/local/hive
- cd /usr/local
- sudo chown -R hduser hive
复制代码 (2)设置情况变量
添加以下代码:
- export HIVE_HOME=/usr/local/hive
- export HCAT_HOME=$HIVE_HOME/hcatalog
- export HIVE_CONF=$HIVE_HOME/conf
- export PATH=$PATH:$HIVE_HOME/bin
复制代码 应用新的情况变量
(3) 设置hive-site.xml
- cd /usr/local/hive
- cp conf/hive-default.xml.template conf/hive-site.xml
- cd /usr/local/hive/conf
- sudo nano hive-site.xml
复制代码 将对应的name修改成下面的value:(在nano编译器中使用Ctrl+w搜刮)
- <property>
- <name>javax.jdo.option.ConnectionURL</name>
- <value>jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8&createDatabaseIfNotExist=true</value>
- <description>JDBC connect string for a JDBC metastore.To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.</description>
- </property>
- <property>
- <name>javax.jdo.option.ConnectionDriverName</name>
- <value>com.mysql.jdbc.Driver</value>
- <description>Driver class name for a JDBC metastore</description>
- </property>
- <property>
- <name>javax.jdo.option.ConnectionUserName</name>
- <value>hive</value>
- <description>Username to use against metastore database</description>
- </property>
- <property>
- <name>javax.jdo.option.ConnectionPassword</name>
- <value>hive</value>
- <description>password to use against metastore database</description>
- </property>
复制代码 在hive-site.xml中的
将 ${system:java.io.tmpdir}全部替换为/usr/local/hive/tmp,
将 ${system:user.name}全部替换为 ${user.name}
设置文件3215行有代码错误必要修改,将该行出现红色的三个字母删除,“;”生存;(这里使用Ctrl+/ 搜刮)
(4) 设置hive-env.sh
- cd /usr/local/hive/conf
- sudo mv hive-env.sh.template hive-env.sh
- cd /usr/local/hive/conf
- vim hive-env.sh
复制代码 在hive-env.sh中输入如下设置信息:
- export HADOOP_HEAPSIZE=4096
复制代码 把HADOOP_HEAPSIZE设置为4096,表示把Java堆内存巨细设置为4GB。通过上面的设置,可以避免后续在使用Hive过程中产生内存溢出的标题。
2、安装并设置MySQL
2.1 安装MySQL
- sudo apt-get install mysql-server
- sudo apt-get install mysql-client
复制代码 2.2 重启MySQL
- service mysql restart
- sudo mysql -u root -p
复制代码 2.3 设置登录密码(密码为123456,已经填好了,不消自己另外再填)
- mysql>use mysql;
- mysql>update user set authentication_string='123456' where user = 'root';
- mysql>flush privileges;
- mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
- mysql>quit;
复制代码 2.4 重新打开MySQL
2.5 MySQL JDBC驱动程序安装
(1) 官网下载:mysql-connector-j-8.0.31.jar
(2) 将安装的驱动程序文件夹中的JAR文件“mysql-connector-j-8.0.31.jar”复制到Hive安装目录的lib文件夹中
- cd /home/hadoop/Downloads
- tar -zxvf mysql-connector-j-8.0.31.tar.gz
- cp mysql-connector-j-8.0.31/mysql-connector-j-8.0.31.jar /usr/local/hive/lib/
复制代码 2.6 设置mysql允许hive接入:
- mysql>CREATE USER 'hive'@'localhost';
- mysql>ALTER USER 'hive'@'localhost' IDENTIFIED BY 'hive';
- mysql>GRANT ALL PRIVILEGES ON *.* TO 'hive'@'localhost';
- mysql>FLUSH PRIVILEGES;
复制代码 2.7 新建hive数据库
- mysql>create database hive;
- mysql>quit;
复制代码 2.8 初始化数据库
- schematool -dbType mysql -initSchema
复制代码 3、启动hive
- start-all.sh #先启动Hadoop
- hive
复制代码 4、测试hive
- hive>show databases;
- hive>show tables;
复制代码 结果如下:
三、Hive应用实例:WordCount
现在我们通过一个实例——词频统计,来深入学习一下Hive的具体使用。首先,必要创建一个必要分析的输入数据文件,然后编写HiveQL语句实现WordCount算法,在Unix下实现步骤如下:
1、创建input目录,其中input为输入目录。命令如下:
- cd /usr/local/hadoop
- mkdir input
复制代码 2、在input文件夹中创建两个测试文件file1.txt和file2.txt,命令如下:
- cd /usr/local/hadoop/input
- echo "hello world" > file1.txt
- echo "hello hadoop" > file2.txt
- cd /usr/local/hadoop
- ./bin/hdfs dfs -mkdir input #假设HDFS中已经存在/user/hadoop目录
- ./bin/hdfs dfs -put ./input/file1.txt /user/hadoop/input
- ./bin/hdfs dfs -put ./input/file2.txt /user/hadoop/input
复制代码 3、进入hive命令行界面,编写HiveQL语句实现WordCount算法,命令如下:
- hive
- hive> create table docs(line string);
- hive> load data inpath 'input' overwrite into table docs;
- hive>create table word_count as
- select word, count(1) as count from
- (select explode(split(line,' '))as word from docs) w
- group by word
- order by word;
- #最后的代码是一个整体,直接一起复制到终端中即可;
复制代码 实行完成后,用select语句查看运行结果如下:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |