大数据“全家桶”,快来啃食
文章目录
1 、 Hadoop HA布置
2 、 Sqoop 安装和使用
2.1我先介绍sqoop为何物吧?
sqoop主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。总之这是一个你传(情书)给我、我传给你(情书)的一个工具。
2.2 sqoop 安装
解压到 “ /usr/local/src/ ” 目录
[root@hadoop01 ~]# tar -zxvf /home/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /usr/local/src/
重命名为 “ sqoop”
[root@hadoop01 ~]# mv /usr/local/src/sqoop-1.4.7.bin__hadoop-2.6.0/ /usr/local/src/sqoop
修改环境变量
[root@l1 src]# vim /etc/profile
#将下面添加入文件
export SQOOP_HOME=//usr/local/src/sqoop
export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SQOOP_HOME/bin:
#刷新环境变量
[root@l1 src]# source /etc/profile
重命名配置文件,并编辑
[root@l1 sqoop]# mv ./conf/sqoop-env-template.sh ./conf/sqoop-env.sh
[root@l1 sqoop]# vim ./conf/sqoop-env.sh
#将下面添加入文件
#注意:hadoop 、zookeeper 都是你自己的安装地址
export HADOOP_COMMON_HOME=/usr/local/src/hadoop-2.7.6
export HADOOP_MAPRED_HOME=/usr/local/src/hadoop-2.7.6
export ZOOCFGDIR=/usr/local/src/zookeeper-3.4.10
测试sqoop是否能和MySQL联通
注意:1.连接MYSQl需要将MySQL的驱动jar拷贝到Sqoop的安装目录下的lib目录中
2. mysql如果连接的不是自己本地的而是远程的,必须将mysql的远程访问打开,mysql默认关闭远程连接
[root@hadoop01 sqoop]# sqoop list-databases --connect jdbc:mysql://自己的MySQL地址:3306 --username root --password root
2.3 sqoop 命令
sqoop import 导入
--connect jdbc:mysql://127.0.0.1:3306/$db_name 连接数据库
--username root 数据库用户名
--password root 数据库密码
--target-dir /origin_data/$db_name/db/$1/$db_date HDFS地址
--delete-target-dir HDFS地址存在删除
--num-mappers $2 \--split-by $3 maptask数量
--input-null-string '\\N' 空值转换
--input-null-non-string '\\N' 非空字符串替换
--fields-terminated-by "\t" 字符串分割
--lines-terminated-by "\n" 行切割
--query "$4"' and $CONDITIONS;'
-hive-home <dir> 重写$HIVE_HOME
-hive-import 插入数据到hive当中,使用hive的默认分隔符
-hive-overwrite 重写插入
-create-hive-table 建表,如果表已经存在,该操作会报错
-hive-table <table-name> 设置到hive当中的表名
-hive-drop-import-delims 导入到hive时删除 \n, \r, and \0001
-hive-delims-replacement 导入到hive时用自定义的字符替换掉 \n, \r, and \0001
-hive-partition-key hive分区的key
-hive-partition-value <v> hive分区的值
-map-column-hive <map> 类型匹配,sql类型对应到hive类型
3 、Hive 安装和使用
3.1我又来介绍Hive为何物吧?
hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。
安装前的准备
1、一定现需要安装JDK。
2、需要Hadoop先安装。
3、需要关系型数据库---用于存储元数据。
3.2 Hive的安装
[root@l1 ~]# tar -zvxf apache-hive-2.3.7-bin.tar.gz -C /usr/local/src/
[root@l1 ~]# mv /usr/local/src/apache-hive-2.3.7-bin/ /usr/local/src/hive-2.3.7
配置hive-env.sh
[root@l1 ~]# mv /usr/local/src/hive-2.3.7/conf/hive-env.sh.template /usr/local/src/hive-2.3.7/conf/hive-env.sh
[root@l1 ~]# vi /usr/local/src/hive-2.3.7/conf/hive-env.sh
#加入自己的安装地址
export JAVA_HOME=/usr/local/src/jdk1.8.0_152/
export HADOOP_HOME=/usr/local/src/hadoop-2.7.6/
配置hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://自己的地址:3306/metastore?createDatabaseIfNotExist=true</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.schema.verification</name>
<value>false</value>
</property>
</configuration>
拷贝mysql的启动包到hive的lib目录下
[root@l1 ~]# cp /home/mysql-connector-java-5.1.28-bin.jar /usr/local/src/hive-2.3.7/lib/
3.3 Hive的使用
初始化元数据(meta)
# hive的元数据包括:库、表、字段、字段类型、类外部表、分区、分桶、创建人等很多信息。
# hive的元数据默认存储到derby数据库中,但是2.x后也需要初始化元数据(schematool -initSchema -dbType derby)。
[root@hadoop01 ~]# schematool -initSchema -dbType mysql
注意:hive的地址也要加入环境变量,否则找不到命令
启动元数据服务
[root@l1 ~]# hive --service metastore &
测试hive是否启动
[root@l1 ~]# hive
hive命令讲解
4 、spark 安装和使用
4.1 spark安装
#解压
[root@l1 ~]# tar -zxvf /home/spark-2.4.5-bin-hadoop2.7.tgz -C /usr/local/src/
#重命名配置文件
[root@l1 conf]# mv spark-env.sh.template spark-env.sh
[root@l1 conf]# mv slaves.template slaves
root@l1 conf]# vim spark-env.sh
#添加
export JAVA_HOME=/usr/local/src/jdk1.8.0_152/
SPARK_MASTER_HOST=L1
SPARK_MASTER_PORT=7077
[root@l1 conf]# vim slaves
#添加主机映射
L1
L2
L3
分发配置到hadoop02和hadoop03上。
[root@l1 spark-2.4.5-bin-hadoop2.7]# scp -r /usr/local/src/spark-2.4.5-bin-hadoop2.7/ hadoop02:/usr/local/src/
[root@l1 spark-2.4.5-bin-hadoop2.7]# scp -r /usr/local/src/spark-2.4.5-bin-hadoop2.7/ hadoop03:/usr/local/src/
配置环境变量
[root@l1 src]# vim /etc/profile
export SPARK_HOME=/usr/local/src/spark-2.4.5
export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SQOOP_HOME/bin:$HIVE_HOME/bin:$SPARK_HOME/bin:
#刷新环境变量
[root@l1 src]# source /etc/profile
4.2 spark集群启动测试
#注意不要直接使用start-all.sh 因为hadoop的全启动命令也是start-all.sh
[root@hadoop01 spark-2.4.5-bin-hadoop2.7]# ./sbin/start-all.sh
#查看启动进程
[root@hadoop01 spark-2.4.5-bin-hadoop2.7]# jps
124755 Worker
2163 DataNode
2023 NameNode
2951 NodeManager
125270 Jps
2824 ResourceManager
124664 Master
# 查看spark的web ui master的web端口位8080 ; worker的web端口位8081
web访问:http://hadoop01:8080/
4.3 spark使用
略