大数据学习记录(hadoop hive flume azkaban sqoop)


大数据学习记录(hadoop hive flume azkaban sqoop)

1. hadoop对海量数据进行分布式处理
2. 核心组件:HDFS(分布式文件系统)、YARN(运算资源调度系统)、MAPREDUCE(分布式运算编程框架)
3. HIVE:基于大数据技术(文件系统+运算框架)的SQL数据仓库工具
4. HBASE:基于HADOOP的分布式海量数据库
5. Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库
6. Oozie/Azkaban:工作流调度框架
7. Sqoop:数据导入导出工具
8. Flume:日志数据采集框架    


hadoop理解记录:
    1. hadoop在windows下的搭建可以参考一下本地配置:https://blog.csdn.net/u010993514/article/details/82914827;
    2. java api中使用hadoop的copyFromLocalFile方法,需要目录存在。hdfs dir一定要存在,否则命令不会执行;
    3. reduce的shuffle机制:就是将maptask输出的处理结果数据,分发给reducetask,并在分发的过程中,对数据按key进行了分区和排序;
    4. Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而mapreduce等运算程序则相当于运行于操作系统之上的应用程序;
    5. mapreduce对于一个文件分片时,在分片末尾会不会有一条记录被拆开,从而导致map端在输入的时候,会不会有一行记录是不完整的疑惑?其实这肯定是不可能,如果这样的问题没有解决,那在生产生活中肯定是经常遇到,所以hadoop源码中肯定有这方面的处理。即使跨split.跨block也不能阻止它完整读取一行数据的决心。如果start!=0也就是不是第一个分片的时候,都要默认从第二行的开始位置读起,这里start更新为第二行的起始位置;

hive理解记录:
    1. Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能;
    2. Hive利用HDFS存储数据,利用MapReduce查询数据;
    3. hive内置函数和用户自定义函数:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-OperatorsprecedencesOperatorsPrecedencesOperatorsPrecedences;


Flume理解记录:
    1. Flume分布式系统中最核心的角色是agent,每一个agent相当于一个数据传递员,内部有三个组件:
    Source:采集源,用于跟数据源对接,以获取数据;Sink:下沉地,采集数据的传送目的,用于往下一级agent传递数据或者往最终存储系统传递数据;Channel:angent内部的数据传输通道;

工作流调度框架理解记录:
    1. 为了组织复杂执行计划,需要一个工作流调度系统来调度执行(oozie、azkaban);
    2. Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪工作流;


sqoop理解记录
    1. sqoop是Hadoop和关系数据库服务器之间传送数据的工具。导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;导出数据:从Hadoop的文件系统中导出数据到关系数据库; 
    2. mysql导入到hive:
    ./sqoop import --connect jdbc:mysql://localhost:3306/userdb --username root --password root --where "id ='1201'" --table emp --hive-import --m1
    3. mysql导出到hdfs、mysql从hdfs导入
    ./sqoop import --connect jdbc:mysql://localhost:3306/userdb  --username root  --password  root  (--where "id ='1201'") --direct --table emp  --target-dir /app/sqoop/wherequery -m1
    ./sqoop export --connect jdbc:mysql://localhost:3306/userdb  --username root  --password  root --table emp2  --export-dir /app/sqoop/
    4. 查看导出的文件:
    hadoop fs -cat /app/sqoop/wherequery/part-*
    5. Sqoop提供的--fields-terminated-by选项可以支持指定自定义的分隔符;
    6. Sqoop的原理其实就是将导入导出命令转化为mapreduce程序来执行,sqoop在接收到命令后,都要生成mapreduce程序;

猜你喜欢

转载自blog.csdn.net/qq_43285577/article/details/83623757
今日推荐