数据采集传输主要技术
Sqoop
sqoop是Apache旗下的一款开源的离线数据传输工具主要用于Hadoop(Hive)与传统数据库(Mysql、Oracle等)间的数据传递。它可以将关系型数据库中的数据导入到Hadoop的HDFS中,也可以将HDFS中的数据导出到关系型数据库中
Flume
Flume是cloudera公司提供的一个高可用、高可靠、分布式的海量日志采集、聚合和传输工具,目前已经是Apache的顶级子项目。使用Flume可以手机诸如日志、时间等数据,并将这些数据资源集中存储起来供下游使用
数据处理主要技术
MapReduce
MapReduce是Google公司的核心计算模型,它将运行于大规模集群上的并行计算过程高度抽象为Map和Reduce两个函数。它的伟大之处在于其将处理大数据的能力赋予了普通开发人员,以至于开发人员即使不会任何的分布式编程知识,也能将自己的程序运行在分布式系统上处理海量数据。
Hive
Hive是一个建立在Hadoop体系结构之上的SQL抽象。它提供了一种类似SQL的查询语言,帮助那些熟悉SQL的用户处理和查询Hadoop中的数据。
数据存储主要技术
HDFS是一个分布式文件存储系统,提供了一个高容错和高吞吐量的海量数据存储解决方案
HBase是一种构建在HDFS之上的分布式、面向列的存储系统。在需要实时读写并随机访问超大规模数据集等场景下,HBase是目前市场上的主流技术选择。
Hive基础知识
Hive是Hadoop生态系统中必不可少的一个工具。它可以将存储在HDFS中的结构化数据映射为数据库中的一张表,并提供了一种SQL方言对其进行查询。这些 SQL语句最终会翻译成MapReduce会存储和计算数据,完全依赖于HDFS和MapReduce。
Hive提供了一个被成为Hive查询语言(简称HiveQ或HQL)的SQL方言,来查询存储在Hadoop集群中的数据。
Hive架构
Hive中附带的客户端有三种:CLI(命令行客户端)、HWI(网页客户端)和ThriftServer(编程客户端)。
使用CLI也就是命令行界面于Hive进行交互
在客户端输入的所有命令和查询都会进入到Driver(驱动模块)进行解析、编译、优化和执行。
Driver包含SQLparser、Physical Plan、Query Optimizer和Execution四个模块。 SQLparser是解析器,用于将SQL语句转化为抽象语法树。Physical Plan是编译器,用于将抽象语法树编译生成逻辑计划。QueryOptimizer是优化器,用于对逻辑执行计划进行优化。Exeution是执行器,用于把逻辑执行计划转换为可执行的MapReduce程序。
MetaStore(元数据存储)是一个独立的关系型数据库(通常是MySQL),Hive会在其中保存表模式和其他系统元数据。
查看Hadoop版本号命令:
hadoop version
启动HDFS:
start-dfs.sh
启动Yarn:
start-yarn.sh
检查Hadoop进程:
jps
安装MySQL使用以下命令:
sudo apt-get install mysql-server
查看默认的账号密码:
sudo cat /etc/mysql/debian.cnf
使用默认的帐号和密码登录MySQL数据库:
mysql -u debian-sys-maint -p
创建hive用户,设置密码为123456,并允许远程登录:
CREATE USER 'hive'@'%'IDENTIFIED BY '123456';
授权hive用户操纵hive数据库的权限:
GRANT ALL PRIVILEGES ON hive.*TO'hive'@'%';
flush privileges;
退出MySQL数据库:
exit
选择国内镜像下载Hive2.3.7,地址:
https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.7/
(1)上传Hive到/home/hadoop
(2)把Hive压缩文件,解压到/usr/local中,使用以下命令:
sudo tar -xvf apache-hive-2.3.7-bin.tar.gz -C /usr/local
(3)进入/usr/local目录,使用以下命令:
cd /usr/local
(4)将解压后的apache-hive-2.3.7-bin目录重命名为hive,使用以下命令:
sudo mv apache-hive-2.3.7-bin hive
(5)授权当前用户hadoop拥有hive目录的所有者权限,使用以下命令:
sudo chown -R hadoop hive
配置Hive
(1)进入hive配置文件目录,使用以下命令:
cd /usr/local/hive/conf/
(2)创建hive-site.xml文件并填写配置信息,使用以下命令:
vim hive-site.xml
配置内容如下:
<configuration>
<property>
<name>system:java.io.tmpdir</name>
<value>/usr/local/hive/tmp</value>
</property>
<property>
<name>system:user.name</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
</configuration>
(3)进入hive的依赖库目录,使用以下命令:
cd /usr/local/hive/lib
(4)上传mysql的驱动文件到lib目录
(5)进入hadoop软件的配置文件目录,使用以下命令:
cd /usr/local/hadoop/etc/hadoop/
(6)编辑core-site.xml文件,使用以下命令:
vim core-site.xml
增加以下两项配置信息
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
(7)进入hadoop用户的家目录,使用以下命令:
cd ~
(8)编辑环境变量文件,使用以下命令:
vim .bashrc
(9)在环境变量文件最后添加以下内容:
export HIVE_HOME=/usr/local/hive
export PATH=${HIVE_HOME}/bin:$PATH
(10)刷新环境变量,使用以下命令:
source .bashrc
(11)初始化Hive,使用以下命令:
schematool -dbType mysql -initSchema
(12)查询Hive中的默认数据库列表,用以验证Hive是否安装成功,使用以下命令:
hive -e 'show databases'
(12)查询Hive中的默认数据库列表,用以验证Hive是否安装成功,使用以下命令:
hive -e 'show databases'