安装MySQL并运行
在当前用户下运行
sudo apt update
sudo apt install mysql-server
安装成功后启动MySQL服务,运行
sudo service mysql start
查看MySQL的默认用户名和密码,运行
sudo cat /etc/mysql/debian.cnf
结果如下:
修改MySQL密码,运行
mysqladmin -u debian-sys-maint -p password "123456"
输入自己的密码
然后登录MySQL,运行
mysql -u debian-sys-maint -p
输入自己的密码即可登录MySQL,登录后保持此命令行界面不要关闭,效果如下:
创建hadoop账户并配置ssh免密码登录
创建hadoop账户并切换到hadoop账户,运行
sudo useradd -m hadoop -s /bin/bash
sudo passwd hadoop
sudo adduser hadoop sudo
su hadoop
结果如下:
安装openssh-server,运行
sudo apt install openssh-server
尝试连接,连接成功后退出,这次连接需要输入密码,运行
ssh localhost
exit
配置免密码登录,运行
cd ~/.ssh/
ssh-keygen -t rsa
cat ./id_rsa.pub >> ./authorized_keys
再次尝试连接,这次连接不需要输入密码,连接成功后退出,运行
ssh localhost
exit
效果如下:
安装并配置Java
Java版本选择这次实验提供的版本,之前的版本会因为版本号过高报错
下载Java,运行
sudo wget https://repo.huaweicloud.com/java/jdk/8u152-b16/jdk-8u152-linux-x64.tar.gz
解压到/usr/local/下
sudo tar -xzvf jdk-8u152-linux-x64.tar.gz -C /usr/local
重命名
sudo mv /usr/local/jdk1.8.0_152 /usr/local/java
配置环境变量,打开~/.bashrc
sudo vim ~/.bashrc
在其中加入
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
如下图所示
关闭文件并使环境变量生效,运行
source ~/.bashrc
查看java版本,运行
java -version
可以看到Java的版本号,效果如下
此时运行
update-alternatives --display java
会发现报错,没有Java,所以要手动添加Java,运行
sudo update-alternatives --install /usr/bin/java java /usr/local/java/bin/java 4
添加完成后再次运行
update-alternatives --display java
就可以看到Java版本号了,结果如下:
安装并配置Hadoop
Hadoop版本使用2.10.0
下载Hadoop,运行
cd /usr/local/
sudo wget https://archive.apache.org/dist/hadoop/common/hadoop-2.10.0/hadoop-2.10.0-src.tar.gz
解压,重命名,配置用户
sudo tar -zxvf hadoop-2.10.0.tar.gz
sudo mv ./hadoop-2.10.0/ ./hadoop
sudo chown -R hadoop ./hadoop
配置环境变量,因为Java已经配置过了,这里只要再添加Hadoop的配置
sudo vim ~/.bashrc
所有配置如下图所示
使环境变量生效
source ~/.bashrc
配置Hadoop,运行
sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
配置结果如下,Java要替换成当前版本的路径
使Hadoop配置生效,运行
source /usr/local/hadoop/etc/hadoop/hadoop-env.sh
查看Java,Hadoop的版本,运行
java -version
$JAVA_HOME/bin/java -version
hadoop version
结果如下,配置成功
安装并配置hive
下载hive,运行
sudo wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.6/apache-hive-2.3.6-bin.tar.gz
解压、重命名、配置用户
sudo tar -xzvf apache-hive-2.3.6-bin.tar.gz -C /usr/local
sudo mv /usr/local/apache-hive-2.3.6-bin /usr/local/hive
sudo chown -R hadoop:hadoop /usr/local/hive
配置环境变量,在~/.bashrc加入
export HIVE_HOME=/usr/local/hive
此时~/.bashrc中的内容如下所示
关闭~/.bashrc并使配置生效
source ~/.bashrc
创建hive-site.xml,运行
sudo vim /usr/local/hive/conf/hive-site.xml
里面的内容如下,把MySQL的用户名和密码改成自己的
将 hive 上 jline 的 jar 包拷贝至 hadoop 的对应目录下
cp /usr/local/hive/lib/jline-2.12.jar /usr/local/hadoop/share/hadoop/yarn/lib
hive-env.sh配置:没有找到hive-env.sh,但是在/usr/local/hive/conf中有hive-env.sh.template,把该文件重命名为hive-env.sh进行配置,内容如下
配置完成后要source,使配置生效
在hdfs上创建warehouse,运行
cd /usr/local
hdfs dfs –mkdir hive/warehouse
这里应该先进入local目录然后创建,如果用绝对路径也可以创建,但是会有警告。
在hadoop上配置yarn-site.xml,文件内容不变,直接拷贝就可以,该文件在/usr/local/hadoop/etc/hadoop/,配置完成后文件部分内容如下:
安装MySQL Java驱动,如果不安装后面会无法运行
下载驱动,从官网找到下载路径,运行
sudo wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.48.tar.gz
下载完成后解压,把里面的mysql-connector-java-5.1.48.jar拷贝到/usr/local/hive/lib,如下图所示
启动Hadoop,运行/usr/local/hadoop/sbin/start-all.sh
,结果如下,启动成功
初始化 Schema,运行/usr/local/hive/bin/schematool –dbType mysql –initSchema
,结果如下,初始化成功
服务端启动 metastore,先进入/usr/local/hive,然后运行bin/hive --service metastore
,保持该命令行界面运行
客户端启动Hive,另外打开一个命令行界面,用hadoop账户登录,先进入/usr/local/hive,然后运行bin/hive
启动成功
Hive操作
创建数据文件,另外打开一个命令行界面,运行
vim /home/hadoop/data.txt
内容如下:
创建数据库,在hive客户端输入
create database companies;
创建成功,然后查询数据库和表,输入
show databases;
show tables;
结果如下,创建成功,查询成功
创建数据表,依次输入
create table employee(eid int, name string, salary string, dept string)
row format delimited
fields terminated by ' '
lines terminated by '\n';
结果如下,创建成功:
把数据加载到表里,运行
load data local inpath '/home/hadoop/data.txt' into table employee;
结果如下,成功:
查询数据,运行
select * from employee;
结果如下,查询成功
通过查询结果建表并查询,依次输入
create table dept_admin
as
select eid, name, salary from employee
where dept='Admin';
select * from dept_admin;
结果如下,创建成功,查询成功
在表中插入自己的学号姓名,运行
insert into dept_admin(eid,name,salary) values(17341224,'zhuwenlong',500000);
结果如下,插入成功
重新查询dept_admin表,出现自己的学号姓名,运行
select * from dept_admin;
结果如下,出现自己的学号姓名
遇到的问题
这次实验遇到的问题特别多,主要有下面这些
- MySQL没有启动
安装MySQL后无法进入,上网查询后发现是没有启动MySQL服务,启动后就能进入了。 - 默认账户和Hadoop账户分不清
不知道哪些在默认账户下操作,哪些在Hadoop账户下操作,导致出现错误,后来统一用Hadoop账户操作 - 安装Java版本不对
用之前的Java版本在运行到后面初始化Schema时会报错,重新安装了这次实验的版本,但是配置比较麻烦,update-alternatives那里要手动添加,环境变量和各种配置也要修改。 - ssh无法连接
在自己的虚拟机上运行时ssh总是无法连接,查询各种资料也没找到解决办法,现在感觉可能是22号端口被其他应用占用了。 - 配置文件问题
hive-site.xml要修改后才能正常运行,刚开始只是改了MySQL的用户名和密码,没有发现后面还有一个路径写错了,这个路径写错会导致后面创建数据库失败。 - Hive-env.sh没找到
后来找到了hive-env.sh.template,重命名后就可以配置了。 - hdfs上创建warehouse失败
应该是路径写错了,到local文件夹下运行,把hive前面的\去掉就可以了,用绝对路径也可以创建,但是会有警告。 - 没有安装MySQL Java驱动
没有安装会报错,从官网找到了下载地址下载解压后放到hive的库中就好了 - 启动hive时提示找不到命令
应该是哪里配置错了,没有深究,从网上找到了解决方法,进入hive目录运行 bin\hive,见https://blog.csdn.net/binbinczsohu/article/details/105139018