hadoop

1. hadoop概述

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFSMapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算

1.hadoop搭建 [待记录]

hive

1.hive概述

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

2.hive搭建

1、下载hive包并解压

1
2
3
4
5
6
wget http://archive.apache.org/dist/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
#可选用清华镜像
http://mirror.tuna.tsinghua.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

#解压
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C ../module/

2、修改其环境变量

1
2
3
4
5
vim /etc/profile
#增加环境变量
export HIVE_HOME=/export/servers/apache-hive-3.1.2-src
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile

3、MySQL配置

为什么配置MySQL?

metastore是hive元数据的集中存放地
metastore默认使用内嵌的derby数据库作为存储引擎
Derby引擎的缺点:一次只能打开一个会话
使用Mysql作为外置存储引擎,多用户同时访问
Hive安装

内嵌模式:元数据保持在内嵌的Derby模式,只允许一个会话连接

本地独立模式:在本地安装MySQL,把元数据放到MySQL内

远程模式:元数据放置在远程的Mysql数据库。

hive只是个工具,包括它的数据分析,依赖于mapreduce,它的数据管理,依赖于外部系统

这一步其实不是必须的,因为Hive默认的metadata(元数据)是存储在Derby里面的,但是有一个弊端就是同一时间只能有一个Hive实例访问,这适合做开发程序时做本地测试。

Hive提供了增强配置,可将数据库替换成MySQL等关系型数据库,将存储数据独立出来在多个服务示例之间共享。

由此可见,你在哪路径下,执行hive指令,就在哪路径下生成metastore_db。建一套数据库文件,这样是极其不合适的,公司里每个人若不一样,则会显得非常混杂。导致员工之间无法公用交流。

为此,需公用的MySQL。

这也是为什么,在安装Hive时,也需要配置MySQL了。

Centos7 MySQL安装步骤:

1、设置MySQL源

首先,您需要在MySQL提供的系统中启用MySQL yum存储库。 根据您的操作系统版本执行以下命令之一,这里我们选择CentOS 7 / RHEL 7的源

1
2
3
4
5
###在CentOS 7 / RHEL 7系统上### 
rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm

###在CentOS 7 / RHEL 6系统上###
rpm -Uvh https://repo.mysql.com/mysql80-community-release-el6-3.noarch.rpm

2、安装MySQL Community Server

MySQL yum存储库包含用于多个MySQL版本的多个存储库配置。 因此,首先禁用mysql repo文件中的所有存储库

1
sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/mysql-community.repo

启用centos mysql8版本

1
2
3
4
## CentOS & RedHat 版本
yum --enablerepo=mysql80-community install mysql-community-server
## Fedora Systems 版本
dnf --enablerepo=mysql80-community install mysql-community-server

如遇到报错内容如下

1
2
3
4
5
warning: /var/cache/yum/x86_64/7/mysql57-community/packages/mysql-community-libs-compat-5.7.37-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 检索密钥
源 "MySQL 5.7 Community Server" 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。
失败的软件包是:mysql-community-libs-compat-5.7.37-1.el7.x86_64
GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

处理方式有两种

安装其他版本 修改/etc/yum.repos.d/mysql-community.repo

enabled=1``gpgcheck=0 即可

  1. 到mysql官网下载校验文件
  2. 修改配置跳过校验
    本文记录第二种方式
    编辑文件
    /etc/yum.repos.d/mysql-community.repo
    修改对应安装版本的 enabled=1``gpgcheck=0即可,默认值为1
1
2
3
4
5
6
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

再次安装即可

3、启动MySQL服务

1
2
3
service mysqld start
-- 或者
systemctl start mysqld.service

4、查找MySQL root密码

安装MySQL 8.0后,将为MySQL根用户创建一个临时密码。 您可以在日志文件中找到生成的临时密码。密码文件位置:/var/log/mysqld.log

1
grep "A temporary password" /var/log/mysqld.log

5、重置root密码

首次安装MySQL后,执行mysql_secure_installation命令以保护MySQL服务器,包含重置密码步骤

密码需要特殊要求,八位,大小写,特殊符号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql_secure_installation
Enter password for user root:

The existing password for the user account root has expired. Please set a new password.

New password:
Re-enter new password:

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

6、MySQL 服务加入开机启动项,并启动mysql进程

1
2
3
4
5
### Using Systemd
systemctl enable mysqld.service
systemctl restart mysqld.service
# 查看状态
systemctl status mysqld

开放3306端口

如果服务器开启了防火墙,记得开启3306端口

1
2
3
4
5
6
7
8
systemctl enable iptables
systemctl start iptables
vim /etc/sysconfig/iptables
##规则中加入
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
##重启防火墙
systemctl enable iptables.service
systemctl start iptables.service

7、登录MySQL

1
mysql -uroot -p

修改您的密码不满足当前的策略要求,可修改成简单密码

1
2
3
4
5
6
7
8
9
10
11
12
13
*# 查看密码策略* 
> mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------+

MySQL8密码策略
1)、validate_password_length 固定密码的总长度;
2)、validate_password_dictionary_file 指定密码验证的文件路径;
3)、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
4)、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;

6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;

1
2
set global validate_password.policy=0;
set global validate_password.length=1;

8、配置mysql允许远程访问

1
2
3
4
5
6
7
8
9
10
11
12
#登录
mysql -u root -p
#查看用户表
select user,host,authentication_string from mysql.user;
#切换数据库
use mysql;
#更新用户表 mysql允许远程访问 :
update user set host='%' where user='root';
#配置mysql允许远程访问 报错使用上面那个
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
#强制刷新权限
flush privileges;

9、附mysql常用命令:

登录mysql

1
mysql -u username -p

启动mysql

1
systemctl start mysqld.service

结束mysql

1
systemctl stop mysqld.service

重启mysql

1
systemctl restart mysqld.service

开机自启

1
systemctl enable mysqld.service

4、将MySQL的JDBC驱动拷贝到Hive的lib目录下

我这里选用的8.0.27自己可以选择版本去下载

[MySQL官网下载驱动](MySQL :: Download Connector/J)

1
2
3
#Platform Independent
wget https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-8.0.27.tar.gz
#解压文件到Hive的lib目录下

4、配置hive文件

1
cd /export/servers/apache-hive-3.1.2-src/conf

把初始化的配置文件 复制一份出来 并且改名

1
2
3
4
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
cp hive-log4j2.properties.template hive-log4j2.properties
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties

6、配置hive-env.sh

1
vi hive-env.sh

文件末尾处

1
2
3
4
5
6
7
8
# Set HADOOP_HOME to point to a specific hadoop install directory
export HADOOP_HOME=/export/servers/hadoop-3.3.1 #hadoop安装路径

# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/export/servers/apache-hive-3.1.2-src/conf #hive路径

# Folder containing extra libraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=/export/servers/apache-hive-3.1.2-src/lib #hivejar包路径

配置hive-site.xml文件

首先使用hadoop创建3个文件夹

1
2
3
hdfs dfs -mkdir -p /user/hive/warehouse
hadoop fs -mkdir -p /user/hive/tmp
hadoop fs -mkdir -p /user/hive/log

修改文件夹权限

1
2
3
hadoop fs -chmod -R 777 /user/hive/warehouse
hadoop fs -chmod -R 777 /user/hive/tmp
hadoop fs -chmod -R 777 /user/hive/log

7、配置Metastore到MySQL

在标签加入下面配置:

1
vim hive-site.xml

在$HIVE_HOME/conf修改新建hive-site.xml文件,根据自己的情况更在主机名,mysql的用户名和密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<configuration>
<!-- 存储元数据mysql相关配置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&amp;u
seSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</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>hadoop</value>
</property>
<!-- H2S运行绑定host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node1</value>
</property>
<!-- 远程模式部署metastore metastore地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1:9083</value>
</property>
<!-- 关闭元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>

报错原因1:

1、Jar包冲突

因为跟hadoop的jar包存在冲突,主要有两个jar包冲突,一个log4j-slf4j-impl-2.10.0.jar跟hadoop冲突,可以删除,我这里就打个标记弃用。

1
mv $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.bak

另一个时guava-19.0.jar,跟hadoop里面的guava-27.0-jre.jar冲突,采用高版本替换低版本的方式。

1
2
3
cp $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar $HIVE_HOME/lib

rm $HIVE_HOME/lib/guava-19.0.jar

报错原因2:

hive-site.xml配置文件中,3278行(见报错记录第二行)有特殊字符

Exception in thread “main” java.lang.RuntimeException: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8
at [row,col,system-id]: [3278,96,”file:/export/servers/apache-hive-3.1.2-bin/conf/hive-site.xml”]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[root@hadoop1 apache-hive-3.1.2-bin]# schematool -dbType mysql -initSchema
Exception in thread "main" java.lang.RuntimeException: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8
at [row,col,system-id]: [3278,96,"file:/export/servers/apache-hive-3.1.2-bin/conf/hive-site.xml"]
at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:3069)
at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:3018)
at org.apache.hadoop.conf.Configuration.loadProps(Configuration.java:2893)
at org.apache.hadoop.conf.Configuration.addResourceObject(Configuration.java:1034)
at org.apache.hadoop.conf.Configuration.addResource(Configuration.java:939)
at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:5151)
at org.apache.hadoop.hive.conf.HiveConf.<init>(HiveConf.java:5104)
at org.apache.hive.beeline.HiveSchemaTool.<init>(HiveSchemaTool.java:96)
at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:1473)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.util.RunJar.run(RunJar.java:323)
at org.apache.hadoop.util.RunJar.main(RunJar.java:236)
Caused by: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8
at [row,col,system-id]: [3278,96,"file:/export/servers/apache-hive-3.1.2-bin/conf/hive-site.xml"]
at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:634)
at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:504)
at com.ctc.wstx.sr.StreamScanner.reportIllegalChar(StreamScanner.java:2469)
at com.ctc.wstx.sr.StreamScanner.validateChar(StreamScanner.java:2416)
at com.ctc.wstx.sr.StreamScanner.resolveCharEnt(StreamScanner.java:2382)
at com.ctc.wstx.sr.StreamScanner.fullyResolveEntity(StreamScanner.java:1528)
at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2818)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1121)
at org.apache.hadoop.conf.Configuration$Parser.parseNext(Configuration.java:3373)
at org.apache.hadoop.conf.Configuration$Parser.parse(Configuration.java:3159)
at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:3052)
... 14 more

进入hive-site.xml文件,跳转到对应行,删除里面的**&#8**特殊字符即可

报错原因3:

问题 Exception in thread “main” java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative

一、问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Exception in thread "main" java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
at org.apache.hadoop.fs.Path.initialize(Path.java:254)
at org.apache.hadoop.fs.Path.<init>(Path.java:212)
at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:663)
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:586)
at org.apache.hadoop.hive.ql.session.SessionState.beginStart(SessionState.java:553)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:750)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.hadoop.util.RunJar.run(RunJar.java:234)
at org.apache.hadoop.util.RunJar.main(RunJar.java:148)
Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
at java.net.URI.checkPath(URI.java:1823)
at java.net.URI.<init>(URI.java:745)
at org.apache.hadoop.fs.Path.initialize(Path.java:251)

二、解决

1
2
3
4
5
6
7
8
9
10
11
在hive下新建tmp文件:
mkdir iotmp
查看hive-site.xml:
查找xml中"system:java.io.tmpdir"的配置项,如果存在直接修改地址路径到自己新建的路径下。
不存在则加入配置:
<property>
<name>system:java.io.tmpdir</name>
<value>xxxxxx</value> 自己新建的路径
<description/>
</property>
保存退出,重新启动hive成功。

8、下载connecor/J驱动

下载MySQL的java版本的驱动解压,放到hive/lib文件内

1
2
3
4
5
wget https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-8.0.11.tar.gz
tar -zxvf mysql-connector-java-8.0.11.tar.gz -C ../module
cd ../module/mysql-connector-java-8.0.11
chmod 777 mysql-connector-java-8.0.11.jar
cp mysql-connector-java-8.0.11.jar /usr/share/hive/lib/

5、hadoo与hive整合

因为Hive需要把数据存储在HDFS上,并且通过MapReduce作为执行引擎处理数据;

因此需要在Hadoop中添加相关配置属性,以满足Hive在Hadoop上运行。

修改Hadoop中core-site.xml,并且Hadoop集群同步配置文件,重启生效。

1
2
3
4
5
6
7
8
9
<!-- 整合hive -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>

6. 编写集群启动脚本

启动脚本

1
vim myhadoop.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash

if [ $# -lt 1 ]
then
echo "No Args Input..."
exit ;
fi

case $1 in
"start")
echo " =================== 启动 hadoop集群 ==================="

echo " --------------- 启动 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
echo " =================== 关闭 hadoop集群 ==================="

echo " --------------- 关闭 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac

查看各服务进程

1
vim jpsall
1
2
3
4
5
6
7
#!/bin/bash

for host in hadoop102 hadoop103 hadoop104
do
echo =============== $host ===============
ssh $host jps
done

9、启动hadoop服务

初始化Hive的元数据

1
2
3
cd /export/server/apache-hive-3.1.2-bin/
bin/schematool -initSchema -dbType mysql -verbos
#初始化成功会在mysql中创建74张表

前台启动与后台启动例子

1
2
3
4
5
6
7
8
9
10
11
12
#前台启动
/export/server/apache-hive-3.1.2-bin/bin/hive --service metastore
#前台启动开启debug日志
/export/server/apache-hive-3.1.2-bin/bin/hive --service metastore --hiveconf
hive.root.logger=DEBUG,console
#前台启动关闭方式 ctrl+c结束进程

#后台启动
#nohup.out metastore服务启动方式
nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service metastore &
#后台挂起启动 结束进程 使用jps查看进程 使用kill -9 杀死进程
#nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的 文件到当前目录下

后台启动,首先启动metastore服务,然后启动hiveserver2服务。

1
2
3
#先启动metastore服务 然后启动hiveserver2服务
nohup /export/servers/hive/bin/hive --service metastore &
nohup /export/servers/hive/bin/hive --service hiveserver2 &

hadoop2节点/hive2节点控制台操作

1
2
3
4
5
6
beeline> !connect jdbc:hive2://hadoop1:10000
#默认端口号是10000
Connecting to jdbc:hive2://hadoop1:10000
#输入账号密码
Enter username for jdbc:hive2://hadoop1:10000: root
Enter password for jdbc:hive2://hadoop1:10000: ****** #可为空

10、web端可视化页面访问hadoop

1
http://hadoop100:10002/

3.hive操作

1.注释乱码解决处理

1
2
3
4
5
6
7
8
9
#修改表字段注解和表注解
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
#修改分区字段注解
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
#修改索引注解
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

2.DDL操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//创建表 并指定分隔符
create table itheima.person_nature(
id int comment "人物id", --人物id
name string comment "人物名称", --人物名称
attack int comment "攻击力", --攻击力
defense int comment "防御力", -- 防御力
magic int comment "魔法值", --魔法值
type string comment "类型"--类型
)
row format delimited
fields terminated by "\t";


//查询表所有字段
select * from itheima.person_nature;

//删除表
drop table itheima.person_nature ;


--查询所有库
show databases ;
show schemas ;
--查询当前库有表
show tables;
--查询某个库所有表
show tables in itheima;
-- 查询某个表的元信息
desc formatted itheima.person_nature;

hdfs、spark、hive 相关端口号及Web UI界面

spark

master 8989(默认8080)
历史服务 http://CentOS01:18080 hdfs://CentOS01:8020/directory
spark http://CentOS01:8080/
spark配置外部hive后 如果要在spark-shell中查询hive,必须先启动hive(自定义hive启动文件hiveservices.sh)

spark-shell退出指令 :quit

hive

10000 与hiveserver2连接的端口号
10002
启动前启动mysql、hadoop
(自定义hive启动文件hiveservices.sh)数据存储与hdfs上
set hive.execution.engine=tez;

yarn

历史页面 主机地址://8088

启动kafka前要启动zookeeper

➢Spark 查看当前 Spark-shell 运行任务情况端口号:4040(计算)
➢ Spark Master 内部通信服务端口号:7077
➢ Standalone 模式下,Spark Master Web 端口号:8080(资源)
➢ Spark 历史服务器端口号:18080
➢ Hadoop YARN 任务运行情况查看端口号:8088