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

本文介绍了Java动态代理对象的概念及其在Hadoop中的应用,并详细阐述了Hadoop的学习路径和技术要点,包括其起源、背景知识、体系结构以及安装配置等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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() {
								
								@Override
								public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
									//需求:在不改变源代码的情况下,重写method1
									if(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 {

	@Override
	public void method1() {
		System.out.println("*************** method1 *************");
	}

	@Override
	public 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值