准备两台主机,一台作为本地主机,另一台作为远程主机,设置局域网
分别在两台主机上查看局域网地址:
ifconfig | grep inet
查出来很多个inet地址,我们要用的是192开头的局域网地址
经过查询,两台主机的地址分别是192.168.56.105
和192.168.56.106
,那么105作为本地,106作为远程
在远程主机安装MySQL数据库:
wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
sudo rpm -e --nodeps mariadb-connector-c-config
sudo rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
yum -y install mysql-community-server --nogpgcheck
启动数据库服务:
systemctl start mysqld.service
验证是否正常启动:systemctl status mysqld.service
,出现绿色的active后按q退出
grep "password" /var/log/mysqld.log
mysql -uroot -p # 粘贴上临时密码,按回车继续
set global validate_password_policy=0; #修改密码安全策略为低(只校验密码长度,至少8位)
set global validate_password_length=4; #密码最少4位
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; # 修改密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
设置完毕输入quit退出
# 输入密码123456登陆
mysql -h 192.168.56.106 -u root -p
可以正常连接后,输入quit退出
至此已经完成了远程主机的设置,接下来的过程全部都在本地主机上完成
重要 切到本地主机再继续
切到本地主机,测试能否连通远程主机上的mysql服务:
ping 192.168.56.106 # 测试后按Ctrl C退出
yum install netcat -y # 可能需要先安装nc程序,有的系统不用
# nc -zv 192.168.56.106 3306
nc -v 192.168.56.106 3306
参考效果:
连接被拒绝的情况下可以尝试调整远程主机的防火墙
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
然后回到本地主机再次尝试nc命令进行连接,成功连接后退出按Ctrl-C
安装JDK和Hadoop,命令和前两次实训有点差别
yum -y install java-1.8.0-openjdk-devel
cd ~ # 如果切到别的目录了就先切换到家目录
wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-2.10.2/hadoop-2.10.2.tar.gz --no-check-certificate
tar -xzvf ~/hadoop-2.10.2.tar.gz -C /opt
mv /opt/hadoop-2.10.2 /opt/hadoop # 重命名
echo 'export HADOOP_HOME=/opt/hadoop/' >> /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/bin' >> /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/sbin' >> /etc/profile
source /etc/profile
重要:还剩两行命令,根据所使用的操作系统选好后执行,不能都执行
如果用的是centos:
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64" >> /opt/hadoop/etc/hadoop/yarn-env.sh
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64" >> /opt/hadoop/etc/hadoop/hadoop-env.sh
如果用的是fedora:
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-2.fc37.x86_64" >> /opt/hadoop/etc/hadoop/yarn-env.sh
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-2.fc37.x86_64" >> /opt/hadoop/etc/hadoop/hadoop-env.sh
修改两个xml配置文件:
vi /opt/hadoop/etc/hadoop/core-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/hadoop/tmp</value>
<description>location to store temporary files</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
vi /opt/hadoop/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop/tmp/dfs/data</value>
</property>
hdfs namenode -format
设置公钥验证登陆:
ssh-keygen -t rsa
# 按回车,密码留空不用输入
passwd # 重置密码,如果记得密码的话可以跳过这个命令
ssh-copy-id localhost
# 输入yes进入下一步,输入刚刚设定的密码
start-dfs.sh
jps
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
wget https://mirrors.bfsu.edu.cn/apache/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz --no-check-certificate
tar -xzvf apache-hive-2.3.9-bin.tar.gz -C /opt/
mv /opt/apache-hive-2.3.9-bin/ /opt/hive
echo 'export HIVE_HOME=/opt/hive/' >> /etc/profile
echo 'export PATH=$PATH:$HIVE_HOME/bin' >> /etc/profile
source /etc/profile
如果用的是centos:
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64" >> /opt/hive/conf/hive-env.sh
如果用的是fedora:
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-2.fc37.x86_64" >> /opt/hive/conf/hive-env.sh
cd /opt/hive
# 这里不用本地部署中的拷贝操作,而是建一个新的文件使用
vi conf/hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.56.106:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>127.0.0.1</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://127.0.0.1:9083</value>
</property>
<!-- 具体参考课本32-33页 -->
</configuration>
在配置文件中设置远程主机的IP地址:
cd ~
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-connectors-community-el7-x86_64/mysql-connector-java-8.0.30-1.el7.noarch.rpm --no-check-certificate
rpm2cpio mysql-connector-java-8.0.30-1.el7.noarch.rpm | cpio -idmv
cp ./usr/share/java/mysql-connector-java.jar $HIVE_HOME/lib
# 初始化元数据库:
schematool -initSchema -dbType mysql
参考效果:
启动hive服务:
hive --service metastore & # 使进程在后台运行
# 课本33页截图是在前台运行
前一个命令需要几秒钟的时间就绪,稍后再执行第二个命令:
hive --service hiveserver2 &
查看后台任务:
jobs
参考效果:后台有两个任务,而且都在运行中
新建连接:
hive
show databases;
测试建库建表:
create database if not exists z3;
create table if not exists z3.client(
id int,
name string,
phone_number string,
vip_rank int,
balance int
) comment '张三的客户表,用来存在张三的网站上充了会员的账户,有手机号码、会员等级、账户余额等信息'
row format delimited
fields terminated by ',';
use z3;
desc client;
退出输入quit;
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。