第三课记录 大数据学习路线

来源:互联网 发布:mysql中syntax error 编辑:程序博客网 时间:2024/05/28 18:43

一、Java的动态代理对象

        1、为什么需要学习Java的动态代理对象
                举例:买火车票
                        个人 ----> 携程 Elong(代理对象) ---> 火车票(火车站)
  
        2、代理对象:包装设计模式  ---> 在不改变源代码的情况下,增强原对象的功能
                需求:在不改变源代码的情况下,重写method1 ----> 核心:Java:Proxy

                查看Hadoop的源码:
                T proxy = (T) Proxy.newProxyInstance(
                        failoverProxyProvider.getInterface().getClassLoader(),
                        new Class[] { xface }, dummyHandler);


                应用场景:数据库的连接池中使用动态代理对象
                      问题:通过连接池返回的链接是真正的Connection吗?



        A) TestMain.java类

package demo;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class TestMain {public static void main(String[] args) {//创建一个真正的对象final MyBusiness obj = new MyBusinessImpl();////调用//obj.method1();//obj.method2();/* * public static Object Proxy.newProxyInstance(ClassLoader loader,  类加载器(原对象的类加载器)                                      Class<?>[] interfaces,                原对象实现的接口                                                     InvocationHandler(接口) h)             如何处理客户端的一次调用                               throws IllegalArgumentException *///生成一个代理对象MyBusiness proxy = (MyBusiness) Proxy.newProxyInstance(TestMain.class.getClassLoader(),                  obj.getClass().getInterfaces(),                new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {//需求:在不改变源代码的情况下,重写method1if(method.getName().equals("method1")){//重写System.out.println("********** 在代理对象中,重写了method1 *************");return null;}else{//其他方法,直接调用真正的对象return method.invoke(obj, args);}}});//通过代理对象调用真正的对象proxy.method1();proxy.method2();}}

       B) MyBusiness.java 接口

package demo;public interface MyBusiness {//定义方法public void method1();public void method2();}

        C) MyBusinessImpl.java实现类

package demo;public class MyBusinessImpl implements MyBusiness {@Overridepublic void method1() {System.out.println("*************** method1 *************");}@Overridepublic void method2() {System.out.println("*************** method2 *************");}}



二、课程大纲

        (1) 基础:Linux基本操作、Java(Java SE)的基础
        (2)怎么学?学什么?
                (*)重要:运行机制和原理  ---> 画图
                (*)搭建环境: Hadoop比较麻烦
                (*)操作:命令行、Java API、Web Console

        Hadoop部分(60个课时):
                (一)、Hadoop的起源与背景知识
                        1、什么是大数据?
                        2、传统方式如何处理大数据? ---> 数据仓库(就是数据库:Oracle、MySQL、****)
                        3、OLTP和OLAP
                        4、(重要)Google的三篇论文:Hadoop看成一个山寨版的Google
                                        (*)GFS:google  file system   ---> HDFS: hadoop distributed file system
                                        (*)MapReduce  ----> 计算模型MapReduce(Java程序)
                                        (*)BigTable   ----> HBase (NoSQL数据库)

                (二)、实验环境: Linux、JDK
                        安装介质

                (三)、Apache Hadoop的体系结构: 主从结构
                        1、HDFS
                        2、Yarn:运行MapReduce的平台
                        3、HBase

                (四)、Hadoop 2.X的安装与配置
                        三种模式
                                1、本地模式
                                2、伪分布模式
                                3、全分布模式(至少需要3台机器)

                (五)、Hadoop应用案例分析
                (六)、HDFS文件系统: 数据的存储
                                1、操作:命令行、Java API、Web Console
                                2、高级功能:回收站、快照、配额、安全模式
                                3、底层原理:动态代理对象、RPC(remote procedure call)

                (七)、MapReduce: 数据的计算-----> 适合离线计算
                                1、案例:WordCount及运行过程(数据处理的流程)---> 画图
                                2、排序、分区、合并
                                3、MR核心:Shuffle(洗牌)

                (八)、Hive: 数据仓库,支持JDBC ---> 数据分析引擎
                                1、体系结构和安装配置
                                2、Hive查询:类似SQL:select
                                3、客户端:JDBC、Thrift Client
                                4、数据模型:内部表、外部表、分区表、桶表、视图(create view)
                                5、自定义函数:UDF(Java程序)


                (九)、Pig ---> 数据分析引擎
                (十)、HBase
                                1、常见的NoSQL数据库和特点
                                2、HBase的体系结构和表结构
                                3、搭建环境:(*)本地模式  (*)伪分布模式  (*)全分布模式
                                4、操作:命令行:HBase shell
                                        Java API
                                                Web Console
 
                                5、HBase的过滤器:相当于where条件
                                6、HBase上的MapReduce
                                7、HBase的HA(high avaibility 高可用性)


         
                (十一)、Sqoop: 数据采集,采集关系型数据库中的数据
                (十二)、Flume: 数据采集,日志,或者实时数据
                (十三)、HUE: 基于Web的管理工具
                        实现Hadoop的HA和联盟。集群的两大特性:1、负载均衡  2、失败迁移
                (十四)、ZooKeeper
                (十五)、Hadoop的集群和HA

                ==================================================================================
                (十六)、Storm: 实时计算:类似自来水厂-----> 适合实时计算

                Spark部分:
                        1、Scala编程语言
                        2、Spark Core
                        3、Spark SQL
                        4、Spark Streaming
原创粉丝点击