絮叨两句:
博主是一名软件工程系的在校生,利用博客记录自己所学的知识,也希望能帮助到正在学习的同学们
人的一生中会遇到各种各样的困难和折磨,逃避是解决不了问题的,唯有以乐观的精神去迎接生活的挑战
少年易老学难成,一寸光阴不可轻。
最喜欢的一句话:
今日事,今日毕
文章目录
前言项目环境搭建大数据平台基础环境安装JDK1.8,配置环境变量安装Scala 2.11,配置环境变量安装MySQL数据库分布式协作服务Zookeeper大数据基础框架Hadoop分布式文件系统HDFS分布式资源管理框架YARN计算处理框架MapReduce数据仓库框架Hive大数据NoSQL数据库HBase大数据生态组件数据转换工具SQOOP数据实时抽取采集Flume任务调度框架Oozie大数据可视化工具Hue大数据分析框架Spark前言
依据项目需求,使用大数据相关技术框架,安装目录及软件版本具体如下图所示:
提示:以下是本篇文章正文内容,下面案例可供参考
项目环境搭建
所有软件的安装以后,创建软连接,方便日后软件的升级。ln [OPTION]... [-T] TARGET LINK_NAME# 比如ln -s /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0 spark
在实际大数据项目中,大数据管理WEB界面,方便安装部署和监控大数据框架组件:
1)、ClouderaManagerCM安装软件目录:/opt/parcells/......///......2)、Ambari开源/etc//usr/lib/impala/
大数据平台基础环境
安装开发语言软件JDK1.8和Scala2.11及MySQL数据库。 JDK 1.8所有的大数据框架(90%)基于Java语言编写的Scala 2.11
Spark框架和Kafka框架使用Scala语言编写的MySQL Hive 表元数据MetaStoreOozie和Hue元数据系统:WEB Platform
业务数据存储:tags
安装JDK1.8,配置环境变量
# JAVA HOMEexport JAVA_HOME=/export/servers/jdkexport PATH=$PATH:${JAVA_HOME}/bin
安装Scala 2.11,配置环境变量
# SCALA HOMEexport SCALA_HOME=/export/servers/scalaexport PATH=$PATH:${SCALA_HOME}/bin
安装MySQL数据库
按照MySQL数据库功能:
1)、Hive MetaStore存储存储元数据2)、标签系统WEB 平台数据存储tbl_basic_tagtbl_model3)、Oozie 数据存储Oozie调度Spark2应用程序4)、Hue 数据存储方便操作大数据平台组件5)、业务数据: tags_dat订单数据、订单商品表数据、会员信息数据、行为日志数据
截图如下所示:
在实际项目,MySQL数据库字符编码最好是UTF-8,避免乱码出现。
此处使用数据库版本:5.1.73,此版本较低,实际项目使用高版本(至少为**5.6.17**)版本以上。
[root@bigdata-cdh01 ~]# mysql -uroot -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 2Server version: 5.1.73 Source distributionCopyright (c) 2000, , Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases ;+--------------------+| Database |+--------------------+| information_schema || db_orders|| hue|| metastore|| mysql || oozie || tags|| tags_dat || test|+--------------------+9 rows in set (0.31 sec)
点击:linux安装jdk,tomcat,mysql
分布式协作服务Zookeeper
Apache Zookeeper :安装zookeeper步骤在大数据框架中为了高可用性,很多框架依赖于Zookeeper,所以先安装Zookeeper框架,单机版安装。 配置文件:
$ZOOKEEPER_HOME/zoo.cfg
# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=/export/servers/zookeeper/datas/datadataLogDir=/export/servers/zookeeper/datas/log# the port at which the clients will connectclientPort=2181# the maximum number of client connections.# increase this if you need to handle more clients#maxClientCnxns=60###server.1=bigdata-:2888:3888##server.2=bigdata-:2888:3888##server.3=bigdata-:2888:3888# Be sure to read the maintenance section of the # administrator guide before turning on autopurge.## /doc/current/zookeeperAdmin.html#sc_maintenance## The number of snapshots to retain in dataDir#autopurge.snapRetainCount=3# Purge task interval in hours# Set to "0" to disable auto purge feature#autopurge.purgeInterval=1
创建数据和日志目录:
mkdir -p /export/servers/zookeeper/datas/datamkdir -p /export/servers/zookeeper/datas/log
针对Zookeeper集群监控工具:
1. TaoKeeper :
阿里巴巴开源ZK监控工具,目前基本没人使用
2. zkui
/DeemOpen/zkui
/p/dac4c0bd1d2e
大数据基础框架Hadoop
安装大数据Hadoop框架,包含三个组件 :HDFS(分布式文件系统)
YARN(集群资源管理和任务调度平台)
MapReduce(海量数据处理框架)
分布式文件系统HDFS
包含服务组件:NameNode和DataNodes,实际项目中按照HDFS HA(基于JN)。环境变量配置:
$HADOOP_HOME/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/export/servers/jdk
common模块配置文件:$HADOOP_HOME/etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>fs.defaultFS</name><value>hdfs://bigdata-:8020</value></property><property><name>hadoop.tmp.dir</name><value>/export/servers/hadoop/datas</value></property><property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property><property><name>hadoop.proxyuser.hue.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.hue.groups</name><value>*</value></property></configuration>
hdfs模块配置文件:$HADOOP_HOME/etc/hadoop/hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>dfs.replication</name><value>1</value></property><property><name>dfs.permissions.enabled</name><value>false</value></property><property><name>dfs.webhdfs.enabled</name><value>true</value></property></configuration>
配置文件:$HADOOP_HOME/etc/hadoop/slaves
bigdata-
分布式资源管理框架YARN
对集群资源分布式管理和调度,包含 ResourceManager和NodeManagers。面试题:
目前来说,大数据框架Spark 主要还是运行在YANR上,所以必须掌握如下两个问题:
YARN 如何资源管理和应用调度Hadoop组成:Apache Hadoop YARNHadoop组成:Apache Hadoop YARN调度器Spark on YARN:两个DeployMode提交流程与区别
必问,死背[待补充]配置文件$HADOOP_HOME/etc/hadoop/yarn-env.sh
:
# some Java parametersexport JAVA_HOME=/export/servers/jdk
配置文件$HADOOP_HOME/etc/hadoop/yarn-site.xml
:
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>yarn.resourcemanager.hostname</name><value>bigdata-</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.log-aggregation-enable</name><value>true</value></property><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property><property><name>yarn.log.server.url</name><value>http://bigdata-:19888/jobhistory/logs</value></property></configuration>
计算处理框架MapReduce
对海量数据进行离线分析处理框架MapReduce,其中Sqoop和Oozie底层运行都是MapReduce任务,仅仅执行MapTask。面试题: MapReduce Shuffle过程,必须会背会写
MapReduce Shuffle过程 配置文件$HADOOP_HOME/etc/hadoop/mapred-env.sh
:
export JAVA_HOME=/export/servers/jdk
配置文件$HADOOP_HOME/etc/hadoop/mapred-site.xml
:
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>bigdata-:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>bigdata-:19888</value></property></configuration>
数据仓库框架Hive
基于HADOOP之上数据仓库框架Hive,在企业中使用非常广泛,底层MR计算分析数据。
针对Hive框架来说,底层计算引擎可以为三种: MapReduce(最原始)TezSpark从Hive 2.0开始,官方建议使用Spark/Tez作为计算引擎,不推荐使用MR。
面试题:Hive 框架架构组成,核心Driver(具体功能)
将SQL转换为MapReduce程序,提交运行到YARN上, 处理存储在HDFS上数据。
配置文件:
$HIVE_HOME/conf/hive-env.sh
# Set HADOOP_HOME to point to a specific hadoop install directoryHADOOP_HOME=/export/servers/hadoop# Hive Configuration Directory can be controlled by:export HIVE_CONF_DIR=/export/servers/hive/conf
配置文件:$HIVE_HOME/conf/hive-site.xml
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://bigdata-:3306/metastore?createDatabaseIfNotExist=true&characterEncoding=UTF-8</value><description>JDBC connect string for a JDBC metastore</description></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value><description>username to use against metastore database</description></property><property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value><description>password to use against metastore database</description></property><property><name>hive.cli.print.header</name><value>true</value><description>Whether to print the names of the columns in query output.</description></property><property><name>hive.cli.print.current.db</name><value>true</value></property><property><name>hive.mapred.mode</name><value>strict</value></property><property><name>hive.metastore.uris</name><value>thrift://bigdata-:9083</value></property><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property></configuration>
将MySQL数据库驱动包放入$HIVE_HOME/lib目录下。
大数据NoSQL数据库HBase
基于HDFS之上,存储海量数据NoSQL数据库HBase,面向列存储,可以存储几十亿行和百万列。
面试题:1. 从HBase表中读写数据流程首先连接ZK地址,找Meta表的Region所在的RegionServer地址信息读流程:MemStore 、StoreFile、BlockCache(读缓存)写流程:WAL(预写日志)、MemStore、StoreFile(Compaction:Minor、Major)2 . HBase表的设计就是RowKey设计:唯一性、避免热点、前缀匹配查询3. HBase 性能优化数据压缩、表预分区,JVM设置,RegionServer内存分配设置HBase是否有单点故障:没有,可以启动多个HMaster如果HBase集群中HMaster宕机了,短时间内是否影响Client读写表的数据:不影响
配置文件:$HBASE_HOME/conf/hbase-env.sh
# The java implementation to use. Java 1.7+ required.export JAVA_HOME=/export/servers/jdk# Tell HBase whether it should manage it's own instance of Zookeeper or not.export HBASE_MANAGES_ZK=false
配置文件:$HBASE_HOME/conf/hbase-site.xml
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- 指定HBase框架运行临时目录 --><property ><name>hbase.tmp.dir</name><value>/export/servers/hbase/data/tmp</value></property><!-- HBASE 表中数据存储在HDFS上根目录 --><property ><name>hbase.rootdir</name><value>hdfs://bigdata-:8020/hbase</value></property><!-- HBase Cluster 集群运行在分布式模式下,伪分布式也是分布式 --><property ><name>hbase.cluster.distributed</name><value>true</value></property><!-- 告知HBase Cluster所依赖的ZK Cluster地址 --><property><name>hbase.zookeeper.quorum</name><value>bigdata-</value></property><!-- 配置压缩SNAPPY和LZ4 --><!-- <property><name>hbase.pression</name><value>true</value></property><property><name>hbase.regionserver.codecs</name><value>lz4</value></property>--></configuration>
配置文件:$HBASE_HOME/conf/regionservers
bigdata-
大数据生态组件
生态组件中有SQOOP、FLUME、OOZIE和HUE,方便数据采集及任务调度查看。
数据转换工具SQOOP
数据实时抽取采集Flume
面试题:Flume采集数据时,考虑架构:高可用和负载均衡案例:1)、Flume 高可用:/jinYwuM/article/details/825946182)、Flume 负载均衡/silentwolfyh/article/details/51165804
任务调度框架Oozie
大数据可视化工具Hue
大数据分析框架Spark
大数据分析框架Spark,集成批处理、交互式分析和流式处理及高级数据分析(图计算和机器学习)为一体的框架,从Spark 2.0开始,所有应用入口为SparkSession,数据封装在DataFrame中。 配置文件:$SPARK_HOME/conf/spark-env.sh
JAVA_HOME=/export/servers/jdkSCALA_HOME=/export/servers/scalaHADOOP_CONF_DIR=/export/servers/hadoop/etc/hadoopYARN_CONF_DIR=/export/servers/hadoop/etc/hadoopSPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://bigdata-:8020/spark/eventLogs/ -Dspark.history.fs.cleaner.enabled=true"
配置文件:$SPARK_HOME/conf/spark-defaults.conf
spark.eventLog.enabledtruespark.eventLog.dirhdfs://bigdata-:8020/spark/eventLogs/presstruespark.yarn.jars hdfs://bigdata-:8020/spark/jars/*spark.yarn.historyServer.address bigdata-:18080spark.sql.warehouse.dir /user/hive/warehouse
运行Spark 圆周率PI程序,提交到YARN上执行:
#!/bin/bashSPARK_HOME=/export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0${SPARK_HOME}/bin/spark-submit \--master yarn \--deploy-mode cluster \--class org.apache.spark.examples.SparkPi \--driver-memory 512m \--driver-cores 1 \--executor-memory 512m \--executor-cores 1 \--num-executors 2 \--queue default \hdfs://bigdata-:8020/spark/spark-examples_2.11-2.2.0.jar \10
如能帮助到你或对大数据有兴趣的可以关注一下,希望能点个赞支持一下谢谢!