频道栏目
首页 > 网络 > 云计算 > 正文

世界杯外围投注官网

2018-10-18 11:18:36           
收藏   我要投稿

当我说要做大数据工程师时他们都笑我,直到三个月后……

申明:

本文旨在为普通程序员(Java程序员最佳)提供一个入门级别的大数据技术学习路径,不适用于大数据工程师的进阶学习,也不适用于零编程基础的同学。


前言:

一、背景介绍 二、大数据介绍

正文:

一、大数据相关的工作介绍 二、大数据工程师的技能要求 三、大数据学习规划 四、持续学习资源推荐(书籍,博客,网站) 五、项目案例分析(批处理+实时处理)

前言

一、背景介绍

本人目前是一名大数据工程师,项目数据50T,日均数据增长20G左右,个人是从Java后端开发,经过3个月的业余自学成功转型大数据工程师。

二、大数据介绍

大数据本质也是数据,但是又有了新的特征,包括数据来源广数据格式多样化(结构化数据、非结构化数据、Excel文件、文本文件等)、数据量大(最少也是TB级别的、甚至可能是PB级别)、数据增长速度快等。

针对以上主要的4个特征我们需要考虑以下问题:

数据来源广,该如何采集汇总?,对应出现了Sqoop,Cammel,Datax等工具。

数据采集之后,该如何存储?,对应出现了GFS,HDFS,TFS等分布式文件存储系统

由于数据增长速度快,数据存储就必须可以水平扩展。

数据存储之后,该如何通过运算快速转化成一致的格式,该如何快速运算出自己想要的结果?

对应的MapReduce这样的分布式运算框架解决了这个问题;但是写MapReduce需要Java世界杯外围投注网站量很大,所以出现了Hive,Pig等将SQL转化成MapReduce的解析引擎;

普通的MapReduce处理数据只能一批一批地处理,时间延迟太长,为了实现每输入一条数据就能得到结果,于是出现了Storm/JStorm这样的低时延的流式计算框架;

但是如果同时需要批处理流处理,按照如上就得搭两个集群,Hadoop集群(包括HDFS+MapReduce+Yarn)和Storm集群,不易于管理,所以出现了Spark这样的一站式的计算框架,既可以进行批处理,又可以进行流处理(实质上是微批处理)。

而后Lambda架构,Kappa架构的出现,又提供了一种业务处理的通用架构。

为了提高工作效率,加快运速度,出现了一些辅助工具:

Ozzie,azkaban:定时任务调度的工具。 Hue,Zepplin:图形化任务执行管理,结果查看工具。 Scala语言:编写Spark程序的最佳语言,当然也可以选择用Python。 Python语言:编写一些脚本时会用到。 Allluxio,Kylin等:通过对存储的数据进行预处理,加快运算速度的工具。

以上大致就把整个大数据生态里面用到的工具所解决的问题列举了一遍,知道了他们为什么而出现或者说出现是为了解决什么问题,进行学习的时候就有的放矢了。

正文

一、大数据相关工作介绍

大数据方向的工作目前主要分为三个主要方向:

大数据工程师 数据分析师 大数据科学家 其他(数据挖掘等)

二、大数据工程师的技能要求

附上大数据工程师技能图:

enter image description here

必须掌握的技能11条

Java高级(虚拟机、并发) Linux 基本操作 Hadoop(HDFS+MapReduce+Yarn ) HBase(JavaAPI操作+Phoenix ) Hive(Hql基本操作和原理理解) Kafka Storm/JStorm Scala Python Spark (Core+sparksql+Spark streaming ) 辅助小工具(Sqoop/Flume/Oozie/Hue等)

高阶技能6条

机器学习算法以及mahout库加MLlib R语言 Lambda 架构 Kappa架构 Kylin Alluxio

三、学习路径

假设每天可以抽出3个小时的有效学习时间,加上周末每天保证10个小时的有效学习时间;

3个月会有(21*3+4*2*10)*3=423小时的学习时间。

第一阶段(基础阶段)

1)Linux学习(跟鸟哥学就ok了)—–20小时

Linux操作系统介绍与安装。 Linux常用命令。 Linux常用软件安装。 Linux网络。 防火墙。 Shell编程等。

官网:https://www.centos.org/download/
中文社区:http://www.linuxidc.com/Linux/2017-09/146919.htm

2)Java 高级学习(《深入理解Java虚拟机》、《Java高并发实战》)—30小时

掌握多线程。 掌握并发包下的队列。 了解JMS。 掌握JVM技术。 掌握反射和动态代理。

官网:https://www.java.com/zh_CN/
中文社区:http://www.java-cn.com/index.html

3)Zookeeper学习(可以参照这篇博客进行学习:http://www.cnblogs.com/wuxl360/p/5817471.html)

Zookeeper分布式协调服务介绍。 Zookeeper集群的安装部署。 Zookeeper数据结构、命令。 Zookeeper的原理以及选举机制。

官网:http://zookeeper.apache.org/
中文社区:http://www.aboutyun.com/forum-149-1.html

第二阶段(攻坚阶段)

4)Hadoop (《Hadoop 权威指南》)—80小时

HDFS

HDFS的概念和特性。 HDFS的shell操作。 HDFS的工作机制。 HDFS的Java应用开发。

MapReduce

运行WordCount示例程序。 了解MapReduce内部的运行机制。 MapReduce程序运行流程解析。 MapTask并发数的决定机制。 MapReduce中的combiner组件应用。 MapReduce中的序列化框架及应用。 MapReduce中的排序。 MapReduce中的自定义分区实现。 MapReduce的shuffle机制。 MapReduce利用数据压缩进行优化。 MapReduce程序与YARN之间的关系。 MapReduce参数优化。

MapReduce的Java应用开发

官网:http://hadoop.apache.org/
中文文档:http://hadoop.apache.org/docs/r1.0.4/cn/
中文社区:http://www.aboutyun.com/forum-143-1.html

5)Hive(《Hive开发指南》)–20小时

Hive 基本概念

Hive 应用场景。 Hive 与hadoop的关系。 Hive 与传统数据库对比。 Hive 的数据存储机制。

Hive 基本操作

Hive 中的DDL操作。 在Hive 中如何实现高效的JOIN查询。 Hive 的内置函数应用。 Hive shell的高级使用方式。 Hive 常用参数配置。 Hive 自定义函数和Transform的使用技巧。 Hive UDF/UDAF开发实例。

Hive 执行过程分析及优化策略

官网:https://hive.apache.org/
中文入门文档:http://www.aboutyun.com/thread-11873-1-1.html
中文社区:http://www.aboutyun.com/thread-7598-1-1.html

6)HBase(《HBase权威指南》)—20小时

hbase简介。 habse安装。 hbase数据模型。 hbase命令。 hbase开发。 hbase原理。

官网:http://hbase.apache.org/
中文文档:http://abloz.com/hbase/book.html
中文社区:http://www.aboutyun.com/forum-142-1.html

7)Scala(《快学Scala》)–20小时

Scala概述。 Scala编译器安装。 Scala基础。 数组、映射、元组、集合。 类、对象、继承、特质。 模式匹配和样例类。 了解Scala Actor并发编程。 理解Akka。 理解Scala高阶函数。 理解Scala隐式转换。

官网:http://www.scala-lang.org/
初级中文教程:http://www.runoob.com/scala/scala-tutorial.html

8)Spark (《Spark 权威指南》)—60小时

enter image description here

Spark core

Spark概述。 Spark集群安装。 执行第一个Spark案例程序(求PI)。

RDD

enter image description here

RDD概述。 创建RDD。 RDD编程API(Transformation 和 Action Operations)。 RDD的依赖关系 RDD的缓存 DAG(有向无环图)

Spark SQL and DataFrame/DataSet

enter image description here

Spark SQL概述。 DataFrames。 DataFrame常用操作。 编写Spark SQL查询程序。

Spark Streaming

enter image description here

enter image description here

park Streaming概述。 理解DStream。 DStream相关操作(Transformations 和 Output Operations)。

Structured Streaming

其他(MLlib and GraphX )

这个部分一般工作中如果不是数据挖掘,机器学习一般用不到,可以等到需要用到的时候再深入学习。

官网:http://spark.apache.org
中文文档(但是版本有点老):https://www.gitbook.com/book/aiyanbo/spark-programming-guide-zh-cn/details
中文社区:http://www.aboutyun.com/forum-146-1.html

9)Python (推荐廖雪峰的博客—30小时

10)自己用虚拟机搭建一个集群,把所有工具都装上,自己开发一个小demo —30小时

可以自己用VMware搭建4台虚拟机,然后安装以上软件,搭建一个小集群(本人亲测,I7,64位,16G内存,完全可以运行起来,以下附上我学习时用虚拟机搭建集群的操作文档)


集群搭建文档1.0版本

1. 集群规划

enter image description here

所有需要用到的软件:

链接:\http://pan.baidu.com/s/1jIlAz2Y
密码:kyxl

2. 前期准备

2.0 系统安装
2.1 主机名配置
    2.1.0 vi /etc/sysconfig/network
        NETWORKING=yes
    2.1.1 vi /etc/sysconfig/network
        NETWORKING=yes
        HOSTNAME=ys02
    2.1.2 vi /etc/sysconfig/network
        NETWORKING=yes
    2.1.3 vi /etc/sysconfig/network
        NETWORKING=yes
        HOSTNAME=ys04
2.2 host文件修改
    2.2.0 vi /etc/hosts
        10.1.1.149 ys01
        10.1.1.148 ys02
        10.1.1.146 ys03
        10.1.1.145 ys04
2.3 关闭防火墙(centos 7默认使用的是firewall,centos 6 默认是iptables)
    2.3.0 systemctl stop firewalld.service (停止firewall)
    2.3.1 systemctl disable firewalld.service (禁止firewall开机启动)
    2.3.2 firewall-cmd --state (查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
2.4 免密登录(ys01 ->ys02,03,04)
    ssh-keygen -t rsa
    ssh-copy-id ys02(随后输入密码)
    ssh-copy-id ys03(随后输入密码)
    ssh-copy-id ys04(随后输入密码)
    ssh ys02(测试是否成功)
    ssh ys03(测试是否成功)
    ssh ys04(测试是否成功)
2.5 系统时区与时间同步
    tzselect(生成日期文件)
    cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime(将日期文件copy到本地时间中)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44

3. 软件安装

3.0 安装目录规划(软件为所有世界杯体育投注平台公用)
    3.0.0所有软件的安装放到/usr/local/ys/soft目录下(mkdir /usr/local/ys/soft)
    3.0.1所有软件安装到/usr/local/ys/app目录下(mkdir /usr/local/ys/app)
 3.1 JDK(jdk1.7)安装
    3.1.1 alt+p 后出现sftp窗口,cd /usr/local/ys/soft,使用sftp上传tar包到虚机ys01的/usr/local/ys/soft目录下
    3.1.2解压jdk
      cd /usr/local/ys/soft
        世界杯外围投注官网解压
        tar -zxvf jdk-7u80-linux-x64.tar.gz -C /usr/local/ys/app
    3.1.3将java添加到环境变量中
    vim /etc/profile
    世界杯外围投注官网在文件最后添加
    export JAVA_HOME= /usr/local/ys/app/ jdk-7u80
    export PATH=$PATH:$JAVA_HOME/bin
    3.1.4 刷新配置
    source /etc/profile
3.2 Zookeeper安装
    3.2.0解压
    tar -zxvf zookeeper-3.4.5.tar.gz -C /usr/local/ys/app(解压)
    3.2.1 重命名
    mv zookeeper-3.4.5 zookeeper(重命名文件夹zookeeper-3.4.5为zookeeper)
    3.2.2修改环境变量
    vi /etc/profile(修改文件)
    添加内容:
    export ZOOKEEPER_HOME=/usr/local/ys/app/zookeeper
    export PATH=$PATH:$ZOOKEEPER_HOME/bin
    3.2.3 重新编译文件:
    source /etc/profile
    注意:3台zookeeper都需要修改
    3.2.4修改配置文件
    cd zookeeper/conf
    cp zoo_sample.cfg zoo.cfg
    vi zoo.cfg
    添加内容:
    dataDir=/usr/local/ys/app/zookeeper/data
    dataLogDir=/usr/local/ys/app/zookeeper/log
    server.1=ys01:2888:3888 (主机名, 心跳端口、数据端口)
    server.2=ys02:2888:3888
    server.3=ys04:2888:3888
    3.2.5 创建文件夹
    cd /usr/local/ys/app/zookeeper/
    mkdir -m 755 data
    mkdir -m 755 log
    3.2.6 在data文件夹下新建myid文件,myid的文件内容为:
    cd data
    vi myid
    添加内容:
        1
    将集群下发到其他机器上
    scp -r /usr/local/ys/app/zookeeper ys02:/usr/local/ys/app/
    scp -r /usr/local/ys/app/zookeeper ys04:/usr/local/ys/app/
    3.2.7修改其他机器的配置文件
    到ys02上:修改myid为:2
    到ys02上:修改myid为:3
    3.2.8启动(每台机器)
    zkServer.sh start
    查看集群状态
    jps(查看进程)
    zkServer.sh status(查看集群状态,主从信息)
3.3 Hadoop(HDFS+Yarn)
    3.3.0 alt+p 后出现sftp窗口,使用sftp上传tar包到虚机ys01的/usr/local/ys/soft目录下
    3.3.1 解压jdk
      cd /usr/local/ys/soft
        世界杯外围投注官网解压
        tar -zxvf cenos-7-hadoop-2.6.4.tar.gz -C /usr/local/ys/app
    3.3.2 修改配置文件
core-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

enter image description here

hdfs-site.xml
1

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

yarn-sifite.xml
1

enter image description here

svales
ys02
ys03
ys04
3.3.3集群启动(严格按照下面的步骤)
    3.3.3.1启动zookeeper集群(分别在ys01、ys02、ys04上启动zk)
        cd /usr/local/ys/app/zookeeper-3.4.5/bin/
        ./zkServer.sh start
        世界杯外围投注官网查看状态:一个leader,两个follower
        ./zkServer.sh status
    3.3.3.2启动journalnode(分别在在mini5、mini6、mini7上执行)
        cd /usr/local/ys/app/hadoop-2.6.4
        sbin/hadoop-daemon.sh start journalnode
        世界杯外围投注官网运行jps命令检验,ys02、ys03、ys04上多了JournalNode进程
    3.3.3.3格式化HDFS
        世界杯外围投注官网在ys01上执行命令:
        hdfs namenode -format
        世界杯外围投注官网格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/usr/local/ys/app/hadoop-2.6.4/tmp,然后将/usr/local/ys/app/hadoop-2.6.4/tmp拷贝到ys02的/usr/local/ys/app/hadoop-2.6.4/下。
        scp -r tmp/ ys02:/usr/local/ys /app/hadoop-2.6.4/
        世界杯外围投注官网世界杯外围投注官网也可以这样,建议hdfs namenode -bootstrapStandby
    3.3.3.4格式化ZKFC(在ys01上执行一次即可)
        hdfs zkfc -formatZK
    3.3.3.5启动HDFS(在ys01上执行)
        sbin/start-dfs.sh
    3.3.3.6启动YARN
        sbin/start-yarn.sh
3.3MySQL-5.6安装
    略过
3.4 Hive
    3.4.1 alt+p 后出现sftp窗口,cd /usr/local/ys/soft,使用sftp上传tar包到虚机ys01的/usr/local/ys/soft目录下
    3.4.2解压
    cd /usr/local/ys/soft
tar -zxvf hive-0.9.0.tar.gz -C /usr/local/ys/app
    3.4.3 .配置hive
        3.4.3.1配置HIVE_HOME环境变量  vi conf/hive-env.sh 配置其中的$hadoop_home
        3.4.3.2配置元数据库信息   vi  hive-site.xml 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

添加如下内容:

enter image description here

enter image description here

    3.4.4 安装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
    如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
    mysql -uroot -p
    世界杯外围投注官网(执行下面的语句  *.*:所有库下的所有表   %:任何IP地址或主机都可以连接)
    GRANT ALL PRIVILEGES ON *.* TO &世界杯外围投注官网39;root&世界杯外围投注官网39;@&世界杯外围投注官网39;%&世界杯外围投注官网39; IDENTIFIED BY &世界杯外围投注官网39;root&世界杯外围投注官网39; WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    3.4.5 Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的 /usr/local/ys/app/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar
    3.4.6启动hive
    bin/hive
3.5 Kafka
    3.5.1 下载安装包
    http://kafka.apache.org/downloads.html
    在linux中使用wget命令下载安装包
    wget http://mirrors.hust.edu.cn/apache/kafka/0.8.2.2/kafka_2.11-0.8.2.2.tgz
  3.5.2 解压安装包
    tar -zxvf /usr/local/ys/soft/kafka_2.11-0.8.2.2.tgz -C /usr/local/ys/app/
cd /usr/local/ys/app/
ln -s kafka_2.11-0.8.2.2 kafka
  3.5.3 修改配置文件
    cp 
    /usr/local/ys/app/kafka/config/server.properties
   /usr/local/ys/app/kafka/config/server.properties.bak
    vi  /usr/local/ys/kafka/config/server.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

输入以下内容:

enter image description here

    3.5.4 分发安装包
    scp -r /usr/local/ys/app/kafka_2.11-0.8.2.2 ys02: /usr/local/ys/app/
    scp -r /usr/local/ys/app/kafka_2.11-0.8.2.2 ys03: /usr/local/ys/app/
    scp -r /usr/local/ys/app/kafka_2.11-0.8.2.2 ys04: /usr/local/ys/app/
    然后分别在各机器上创建软连
    cd /usr/local/ys/app/
    ln -s kafka_2.11-0.8.2.2 kafka
 3.5.5 再次修改配置文件(重要)
   依次修改各服务器上配置文件的的broker.id,分别是0,1,2不得重复。
 3.5.6 启动集群
    依次在各节点上启动kafka
    bin/kafka-server-start.sh  config/server.properties
3.6 Spark
    3.6.1 alt+p 后出现sftp窗口,cd /usr/local/ys/soft,使用sftp上传tar包到虚机ys01的/usr/local/ys/soft目录下
    3.6.2  解压安装包
tar -zxvf /usr/local/ys/soft/ spark-1.6.1-bin-hadoop2.6.tgz -C /usr/local/ys/app/
    3.6.3 修改Spark配置文件(两个配置文件spark-env.sh和slaves)
    cd /usr/local/ys/soft/spark-1.6.1-bin-hadoop2.6
    进入conf目录并重命名并修改spark-env.sh.template文件
    cd conf/
    mv spark-env.sh.template spark-env.sh
    vi spark-env.sh
    在该配置文件中添加如下配置
    export JAVA_HOME=/usr/java/jdk1.7.0_45
    export SPARK_MASTER_PORT=7077
    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=ys01,ys02,ys04 -Dspark.deploy.zookeeper.dir=/spark"
    保存退出
    重命名并修改slaves.template文件
    mv slaves.template slaves
    vi slaves
    在该文件中添加子节点所在的位置(Worker节点)
    Ys02
    Ys03
    Ys04
    保存退出
    3.6.4 将配置好的Spark拷贝到其他节点上
    scp -r spark-1.6.1-in-hadoop2.6/ ys02:/usr/local/ys/app
    scp -r spark-1.6.1-bin-hadoop2.6/ ys03:/usr/local/ys/app
    scp -r spark-1.6.1-bin-hadoop2.6/ ys04:/usr/local/ys/app
    3.6.5 集群启动
    在ys01上执行sbin/start-all.sh脚本
    然后在ys02上执行sbin/start-master.sh启动第二个Master
3.7 Azkaban
    3.7.1 azkaban web服务器安装
        解压azkaban-web-server-2.5.0.tar.gz
        命令: tar –zxvf /usr/local/ys/soft/azkaban-web-server-2.5.0.tar.gz -C /usr/local/ys/app/azkaban
       将解压后的azkaban-web-server-2.5.0 移动到 azkaban目录中,并重新命名 webserver
     命令: mv azkaban-web-server-2.5.0 ../azkaban
       cd ../azkaban
        mv azkaban-web-server-2.5.0   webserver
     3.7.2 azkaban 执行服器安装
         解压azkaban-executor-server-2.5.0.tar.gz
         命令:tar –zxvf /usr/local/ys/soft/azkaban-executor-server-2.5.0.tar.gz -C /usr/local/ys/app/azkaban
     将解压后的azkaban-executor-server-2.5.0 移动到 azkaban目录中,并重新命名 executor
   命令:mv azkaban-executor-server-2.5.0  ../azkaban
   cd ../azkaban
   mv azkaban-executor-server-2.5.0  executor
    3.7.3 azkaban脚本导入
        解压: azkaban-sql-script-2.5.0.tar.gz
        命令:tar –zxvf azkaban-sql-script-2.5.0.tar.gz
        将解压后的mysql 脚本,导入到mysql中:
        进入mysql
        mysql> create database azkaban;
        mysql> use azkaban;
        Database changed
        mysql> source /usr/local/ys/soft/azkaban-2.5.0/create-all-sql-2.5.0.sql;
    3.7.4 创建SSL配置
    参考地址: http://docs.codehaus.org/display/JETTY/How+to+configure+SSL
    命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA
    运行此命令后,会提示输入当前生成 keystor的密码及相应信息,输入的密码请劳记,信息如下(此处我输入的密码为:123456)
    输入keystore密码: 
    再次输入新密码:
    您的名字与姓氏是什么?
    [Unknown]: 
    您的组织单位名称是什么?
    [Unknown]: 
    您的组织名称是什么?
    [Unknown]: 
    您所在的城市或区域名称是什么?
    [Unknown]: 
    您所在的州或省份名称是什么?
    [Unknown]: 
    该单位的两字母国家世界杯外围投注网站是什么
     [Unknown]:  CN
    CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN 正确吗?
    [否]:  y
输入的主密码(如果和 keystore 密码相同,按回车): 
再次输入新密码
完成上述工作后,将在当前目录生成 keystore 证书文件,将keystore 考贝到 azkaban web服务器根目录中.如:cp keystore azkaban/webserver
    3.7.5 配置文件
    注:先配置好服务器节点上的时区
    先生成时区配置文件Asia/Shanghai,用交互式命令 tzselect 即可
    拷贝该时区文件,覆盖系统本地时区配置
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  
    3.7.6 azkaban web服务器配置
    进入azkaban web服务器安装目录 conf目录
    修改azkaban.properties文件
    命令vi azkaban.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113

内容说明如下:

*Azkaban Personalization Settings
azkaban.name=Test                           世界杯外围投注官网服务器UI名称,用于服务器上方显示的名字
azkaban.label=My Local Azkaban                               世界杯外围投注官网描述
azkaban.color=世界杯外围投注官网FF3601                                                 世界杯外围投注官网UI颜色
azkaban.default.servlet.path=/index                         世界杯外围投注官网
web.resource.dir=web/                                                 世界杯外围投注官网默认根web目录
default.timezone.id=Asia/Shanghai                           世界杯外围投注官网默认时区,已改为亚洲/上海 默认为美国
*Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager   世界杯外围投注官网世界杯体育投注平台权限管理默认类
user.manager.xml.file=conf/azkaban-users.xml              世界杯外围投注官网世界杯体育投注平台配置,具体配置参加下文
*Loader for projects
executor.global.properties=conf/global.properties    世界杯外围投注官网 global配置文件所在位置
azkaban.project.dir=projects                                                世界杯外围投注官网
database.type=mysql                                                              世界杯外围投注官网数据库类型
mysql.port=3306                                                                       世界杯外围投注官网端口号
mysql.host=localhost                                                      世界杯外围投注官网数据库连接IP
mysql.database=azkaban                                                       世界杯外围投注官网数据库实例名
mysql.user=root                                                                 世界杯外围投注官网数据库世界杯体育投注平台名
mysql.password=Root123456                                                        世界杯外围投注官网数据库密码
mysql.numconnections=100                                                  世界杯外围投注官网最大连接数
* Velocity dev mode
velocity.dev.mode=false
* Jetty服务器属性.
jetty.maxThreads=25                                                               世界杯外围投注官网最大线程数
jetty.ssl.port=8443                                                                   世界杯外围投注官网Jetty SSL端口
jetty.port=8081                                                                         世界杯外围投注官网Jetty端口
jetty.keystore=keystore                                                          世界杯外围投注官网SSL文件名
jetty.password=123456                                                             世界杯外围投注官网SSL文件密码
jetty.keypassword=123456                                                      世界杯外围投注官网Jetty主密码 与 keystore文件相同
jetty.truststore=keystore                                                                世界杯外围投注官网SSL文件名
jetty.trustpassword=123456                                                   世界杯外围投注官网 SSL文件密码
* 执行服务器属性
executor.port=12321                                                               世界杯外围投注官网执行服务器端
*邮件设置
[email protected]                                       世界杯外围投注官网发送邮箱
mail.host=smtp.163.com                                                       世界杯外围投注官网发送邮箱smtp地址
mail.user=xxxxxxxx                                       世界杯外围投注官网发送邮件时显示的名称
mail.password=**********                                                 世界杯外围投注官网邮箱密码
[email protected]                              世界杯外围投注官网任务失败时发送邮件的地址
[email protected]                            世界杯外围投注官网任务成功时发送邮件的地址
lockdown.create.projects=false                                           世界杯外围投注官网
cache.directory=cache                                                            世界杯外围投注官网缓存目录
         3.7.7azkaban 执行服务器executor配置
         进入执行服务器安装目录conf,修改azkaban.properties
         vi azkaban.properties
*Azkaban
default.timezone.id=Asia/Shanghai                                              世界杯外围投注官网时区
* Azkaban JobTypes 插件配置
azkaban.jobtype.plugin.dir=plugins/jobtypes                   世界杯外围投注官网jobtype 插件所在位置
*Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
*数据库设置
database.type=mysql                                                                       世界杯外围投注官网数据库类型(目前只支持mysql)
mysql.port=3306                                                                                世界杯外围投注官网数据库端口号
mysql.host=192.168.20.200                                                           世界杯外围投注官网数据库IP地址
mysql.database=azkaban                                                                世界杯外围投注官网数据库实例名
mysql.user=root                                                                       世界杯外围投注官网数据库世界杯体育投注平台名
mysql.password=Root23456                                世界杯外围投注官网数据库密码
mysql.numconnections=100                                                           世界杯外围投注官网最大连接数
*执行服务器配置
executor.maxThreads=50                                                                世界杯外围投注官网最大线程数
executor.port=12321                                                               世界杯外围投注官网端口号(如修改,请与web服务中一致)
executor.flow.threads=30                                                                世界杯外围投注官网线程数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
    3.7.8世界杯体育投注平台配置
    进入azkaban web服务器conf目录,修改azkaban-users.xml
    vi azkaban-users.xml 增加 管理员世界杯体育投注平台
1 2 3

enter image description here

    3.7.9 web服务器启动
    在azkaban web服务器目录下执行启动命令
    bin/azkaban-web-start.sh
    注:在web服务器根目录运行
    或者启动到后台
    nohup  bin/azkaban-web-start.sh  1>/tmp/azstd.out  2>/tmp/azerr.out &
    3.7.10执行服务器启动
    在执行服务器目录下执行启动命令
    bin/azkaban-executor-start.sh
    注:只能要执行服务器根目录运行
    启动完成后,在浏览器(建议使用谷歌浏览器)中输入https://服务器IP地址:8443 ,即可访问azkaban服务了.在登录中输入刚才新的户用名及密码,点击 login
3.8 Zeppelin
参照如下文件:
http://blog.csdn.net/chengxuyuanyonghu/article/details/54915817
http://blog.csdn.net/chengxuyuanyonghu/article/details/54915962
3.9 HBase
    3.9.1解压
    tar –zxvf  /usr/local/ys/soft/hbase-0.99.2-bin.tar.gz  -C /usr/local/ys/app
    3.9.2重命名
    cd  /usr/local/ys/app
    mv hbase-0.99.2 hbase
    3.9.3修改配置文件
     每个文件的解释如下:
    hbase-env.sh
    export JAVA_HOME=/usr/local/ys/app/jdk1.7.0_80   //jdk安装目录
    export HBASE_CLASSPATH=/usr/local/ys/app/hadoop-2.6.4/etc/hadoop  //hadoop配置文件的位置
    export HBASE_MANAGES_ZK=false 世界杯外围投注官网如果使用独立安装的zookeeper这个地方就是false(此处使用自己的zookeeper)
hbase-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

enter image description here

enter image description here

Regionservers    //是从机器的域名
Ys02
ys03
ys04
注:此处HBase配置是针对HA模式的hdfs
    3.9.4将Hadoop的配置文件hdfs-site.xml和core-site.xml拷贝到HBase配置文件中
    cp /usr/local/ys/app/Hadoop-2.6.4/etc/hadoop/hdfs-site.xml /usr/local/ys/app/hbase/conf
    cp /usr/local/ys/app/hadoop-2.6.4/etc/hadoop/core-site.xml /usr/local/ys/app/hbase/conf
    3.9.5发放到其他机器
    scp –r /usr/local/ys/app/hbase ys02: /usr/local/ys/app
    scp –r /usr/local/ys/app/hbase ys03: /usr/local/ys/app
    scp –r /usr/local/ys/app/hbase ys04: /usr/local/ys/app
    3.9.6启动
    cd  /usr/local/ys/app/hbase/bin
    ./ start-hbase.sh
    3.9.7查看
    进程:jps
    进入hbase的shell:hbase shell
    退出hbase的shell:quit
    页面:http://master:60010/ 
3.10KAfkaOffsetMonitor(Kafka集群的监控程序,本质就是一个jar包)
    3.10.1上传jar包
    略
3.10.2 运行jar包
nohup java -cp KafkaOffsetMonitor-assembly-0.2.1.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb --zk ys01,ys02,ys04 --refresh 5.minutes --retain 1.day --port 8089 $
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

4. 集群调优

4.1 辅助工具尽量不安装到数据或者运算节点,避免占用过多计算或内存资源。
4.2 dataNode和spark的slave节点尽量在一起;这样运算的时候就可以避免通过网络拉取数据,加快运算速度。
4.3 Hadoop集群机架感知配置,配置之后可以使得数据在同机架的不同机器2份,然后其他机架机器1份,可是两台机器四台虚机没有必要配感知个人感觉。
4.4 配置参数调优
可以参考http://blog.csdn.net/chndata/article/details/46003399
1 2 3 4 5 6 7 8

第三阶段(辅助工具工学习阶段)

11)Sqoop(CSDN,51CTO ,以及官网)—20小时

enter image description here

数据导出概念介绍 Sqoop基础知识 Sqoop原理及配置说明 Sqoop数据导入实战 Sqoop数据导出实战、 Sqoop批量作业操作

推荐学习博客:http://student-lp.iteye.com/blog/2157983
官网:http://sqoop.apache.org/

12)Flume(CSDN,51CTO ,以及官网)—20小时

enter image description here

FLUME日志采集框架介绍。 FLUME工作机制。 FLUME核心组件。 FLUME参数配置说明。 FLUME采集nginx日志案例(案例一定要实践一下)

推荐学习博客:http://www.aboutyun.com/thread-8917-1-1.html
官网:http://flume.apache.org

13)Oozie(CSDN,51CTO ,以及官网)–20小时

enter image description here

任务调度系统概念介绍。 常用任务调度工具比较。 Oozie介绍。 Oozie核心概念。 Oozie的配置说明。 Oozie实现mapreduce/hive等任务调度实战案例。

推荐学习博客:http://www.infoq.com/cn/articles/introductionOozie
官网:http://oozie.apache.org/

14)Hue(CSDN,51CTO ,以及官网)–20小时

推荐学习博客:http://ju.outofmemory.cn/entry/105162
官网:http://gethue.com/

第四阶段(不断学习阶段)

每天都会有新的东西出现,需要关注最新技术动态,不断学习。任何一般技术都是先学习理论,然后在实践中不断完善理论的过程。

备注

1)如果你觉得自己看书效率太慢,你可以网上搜集一些课程,跟着课程走也OK 。如果看书效率不高就很网课,相反的话就自己看书。

2)企业目前更倾向于使用Spark进行微批处理,Storm只有在对时效性要求极高的情况下,才会使用,所以可以做了解。重点学习Spark Streaming。

3)快速学习的能力解决问题的能力沟通能力**真的很重要。

4)要善于使用StackOverFlow和Google(遇到解决不了的问题,先Google,如果Google找不到解决方能就去StackOverFlow提问,一般印度三哥都会在2小时内回答你的问题)。

5)视频课程推荐:

可以去万能的淘宝购买一些视频课程,你输入“大数据视频课程”,会出现很多,多购买几份(100块以内可以搞定),然后选择一个适合自己的。个人认为小象学院的董西成和陈超的课程含金量会比较高。

四、持续学习资源推荐

Apache 官网(http://apache.org/) Stackoverflow(https://stackoverflow.com/) Github(https://github.com/) Cloudra官网(https://www.cloudera.com/) Databrick官网(https://databricks.com/) About 云 :http://www.aboutyun.com/ CSDN,51CTO (http://www.csdn.net/,http://www.51cto.com/) 至于书籍当当一搜会有很多,其实内容都差不多。

spark-submit:

相当于 hadoop jar 命令 ---> 提交MapReduce任务(jar文件 )
提交Spark的任务(jar文件 )
Spark提供Example例子:/root/training/spark-2.1.0-bin-hadoop2.7/examples/spark-examples_2.11-2.1.0.jar
世界杯外围投注官网 java python r resources scala
世界杯外围投注官网resources ----> 测试数据(格式:txt json avro parquet列式存储文件) --> Spark SQL中

示例:蒙特卡罗求PI(3.1415926******)

[[email protected] spark-2.1.0-bin-hadoop2.7]世界杯外围投注官网 bin/spark-submit --master spark://BigData11:7077 --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.1.0.jar 100
Using Spark&世界杯外围投注官网39;s default log4j profile: org/apache/spark/log4j-defaults.properties
18/10/12 21:22:36 INFO SparkContext: Running Spark version 2.1.0

Pi is roughly 3.141484157074208

 

spark-shell:

类似Scala的REPL命令行,类似Oracle中的SQL*PLUS
Spark的交互式命令行
两种运行模式
作为一个Application运行


(*)本地模式 bin/spark-shell
不连接到集群,在本地执行任务,类似Storm的本地模式
日志:
Spark context Web UI available at http://192.168.157.111:4040
Spark context available as &世界杯外围投注官网39;sc&世界杯外围投注官网39; (master = local[*], app id = local-1528291341116).
Spark session available as &世界杯外围投注官网39;spark&世界杯外围投注官网39;.

开发程序:*****.setMaster("local")

\

(*)集群模式 : 连接到集群,在集群执行任务,类似Storm的集群模式
bin/spark-shell --master spark://bigdata111:7077
日志:
Spark context Web UI available at http://192.168.157.111:4040
Spark context available as &世界杯外围投注官网39;sc&世界杯外围投注官网39; (master = spark://bigdata111:7077, app id = app-20180606212511-0001).
Spark session available as &世界杯外围投注官网39;spark&世界杯外围投注官网39;.

 

开发程序:*****
开发一个WordCount程序:处理HDFS数据
sc.textFile读取HDFS: sc.textFile("hdfs://bigdata111:9000/input/data.txt")
sc.textFile读取本地: sc.textFile("/root/temp/data.txt")

程序
sc.textFile("hdfs://bigdata111:9000/input/data.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://bigdata111:9000/output/0606/spark")

单步运行WordCount(每一步执行的时候,会产生一个新的RDD集合)
var rdd1 = sc.textFile("hdfs://bigdata111:9000/input/data.txt"): 延时读取数据
var rdd2 = rdd1.flatMap(_.split(" ")): 将每句话进行分词,再合并到一个集合(Array)
var rdd3 = rdd2.map((_,1)) : 每个单词记一次数
完整: rdd2.map(word=>(word,1))

var rdd4 = rdd3.reduceByKey(_+_) 把相同的key的value进行累加
注意:reduceByKey(_+_) 完整: reduceByKey((a,b)=>a+b)
举例:Array((Tom,1),(Tom,2),(Mary,3),(Tom,4))
第一步:分组
(Tom,(1,2,4))
(Mary,(3))

第二步:每组对value求和
1+2 = 3
3+4 = 7
总结:(1)算子(函数、方法):Transformation延时计算
Action立即执行
(2)RDD之间存在依赖关系:宽依赖、窄依赖

scala> var rdd1 = sc.textFile("hdfs://192.168.163.11:9000/data/data.txt")
rdd1: org.apache.spark.rdd.RDD[String] = hdfs://192.168.163.11:9000/data/data.txt MapPartitionsRDD[1] at textFile at :24
scala> rdd1.
++             context               filter                  getStorageLevel   map                      preferredLocations   saveAsTextFile   toDS              zip               
aggregate      copy                  first                   glom              mapPartitions            productArity         setName          toDebugString     zipPartitions     
cache          count                 flatMap                 groupBy           mapPartitionsWithIndex   productElement       sortBy           toJavaRDD         zipWithIndex      
canEqual       countApprox           fold                    id                max                      productIterator      sparkContext     toLocalIterator   zipWithUniqueId   
cartesian      countApproxDistinct   foreach                 intersection      min                      productPrefix        subtract         toString                            
checkpoint     countAsync            foreachAsync            isCheckpointed    name                     randomSplit          take             top                                 
coalesce       countByValue          foreachPartition        isEmpty           partitioner              reduce               takeAsync        treeAggregate                       
collect        countByValueApprox    foreachPartitionAsync   iterator          partitions               repartition          takeOrdered      treeReduce                          
collectAsync   dependencies          getCheckpointFile       keyBy             persist                  sample               takeSample       union                               
compute        distinct              getNumPartitions        localCheckpoint   pipe                     saveAsObjectFile     toDF             unpersist                           

scala> rdd1.collect
res0: Array[String] = Array(I love Beijing, I love China, Beijing is the captial of the China)

scala> var rdd2=rdd1.flatMap(_.split(" "))
rdd2: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[3] at flatMap at :26
scala> rdd2.collect
res2: Array[String] = Array(I, love, Beijing, I, love, China, Beijing, is, the, captial, of, the, China)
scala> var rdd3 = rdd2.map((_,1))
rdd3: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[4] at map at :28
scala> rdd3.collect
res3: Array[(String, Int)] = Array((I,1), (love,1), (Beijing,1), (I,1), (love,1), (China,1), (Beijing,1), (is,1), (the,1), (captial,1), (of,1), (the,1), (China,1))
scala> rdd3.
++                         count                      foldByKey               iterator                 persist                              saveAsHadoopDataset         toDF              
aggregate                  countApprox                foreach                 join                     pipe                                 saveAsHadoopFile            toDS              
aggregateByKey             countApproxDistinct        foreachAsync            keyBy                    preferredLocations                   saveAsNewAPIHadoopDataset   toDebugString     
cache                      countApproxDistinctByKey   foreachPartition        keys                     productArity                         saveAsNewAPIHadoopFile      toJavaRDD         
canEqual                   countAsync                 foreachPartitionAsync   leftOuterJoin            productElement                       saveAsObjectFile            toLocalIterator   
cartesian                  countByKey                 fullOuterJoin           localCheckpoint          productIterator                      saveAsSequenceFile          toString          
checkpoint                 countByKeyApprox           getCheckpointFile       lookup                   productPrefix                        saveAsTextFile              top               
coalesce                   countByValue               getNumPartitions        map                      randomSplit                          setName                     treeAggregate     
cogroup                    countByValueApprox         getStorageLevel         mapPartitions            reduce                               sortBy                      treeReduce        
collect                    dependencies               glom                    mapPartitionsWithIndex   reduceByKey                          sortByKey                   union             
collectAsMap               distinct                   groupBy                 mapValues                reduceByKeyLocally                   sparkContext                unpersist         
collectAsync               filter                     groupByKey              max                      repartition                          subtract                    values            
combineByKey               filterByRange              groupWith               min                      repartitionAndSortWithinPartitions   subtractByKey               zip               
combineByKeyWithClassTag   first                      id                      name                     rightOuterJoin                       take                        zipPartitions     
compute                    flatMap                    intersection            partitionBy              sample                               takeAsync                   zipWithIndex      
context                    flatMapValues              isCheckpointed          partitioner              sampleByKey                          takeOrdered                 zipWithUniqueId   
copy                       fold                       isEmpty                 partitions               sampleByKeyExact                     takeSample                                    
scala> var rdd4 = rdd3.reduceByKey(_+_)
rdd4: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[5] at reduceByKey at :30
scala> rdd4.collect
res4: Array[(String, Int)] = Array((is,1), (love,2), (captial,1), (Beijing,2), (China,2), (I,2), (of,1), (the,2))
scala> var rdd5= rdd4.saveAsTextFile("hdfs://192.168.163.11:9000/spark/data/1021")

saveAsTextFile("hdfs://192.168.163.11:9000/spark/data") 世界杯外围投注官网目录不能提前存在,否则抛异常

org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://192.168.163.11:9000/spark/data already exists
at org.apache.hadoop.mapred.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:131)

查看hdfs 上的数据,我们发现有两个分区

\

如何保存一个分区:

scala> rdd4.r
randomSplit   reduce   reduceByKey   reduceByKeyLocally   repartition   repartitionAndSortWithinPartitions   rightOuterJoin
scala> rdd4.repartition(1).saveAsTextFile("hdfs://192.168.163.11:9000/spark/data/1012")

\

五、项目案例分析

1)点击流日志项目分析(此处借鉴CSDN博主的文章,由于没有授权,所以就没有贴过来,下面附上链接)—-批处理

http://blog.csdn.net/u014033218/article/details/76847263

2)Spark Streaming在京东的项目实战(京东的实战案例值得好好研究一下,由于没有授权,所以就没有贴过来,下面附上链接)—实时处理
http://download.csdn.net/download/csdndataid_123/8079233

最后但却很重要一点:每天都会有新的技术出现,要多关注技术动向,持续学习。

以上内容不保证一年以后仍适用。

上一篇:Spark学习之DEA开发WordCount程序
下一篇:大数据学习规划
相关文章
图文推荐

关于我们 | 联系我们 | 服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑--致力于做实用的IT技术学习网站