归档: 2017/4

Hbase安装

1. 解压缩hbase的软件包1[yangql@hadoop01 app]$ tar -xvf hbase-1.2.5-bin.tar.gz 2. 进入hbase的配置目录,在hbase-env.sh文件里面加入java环境变量.1export JAVA_HOME=/opt/jdk1.8.0_91 3. 关闭HBase自带的Zookeeper,使用Zookeeper集群1export HBASE_MANAGES_ZK=false

Hive-《编程指南》学习笔记

基础操作 hive.metastore.warehouse.dir表存储所位于的顶级文件目录,默认是/user/hive/warehouse 可以为不同的用户指定不同的目录,避免相互影响.set hive.metastore.warehouse.dir=/user/myname/hive/warehouse hive默认数据是derby,他会在每个命令启动的当前目录创建metadata_db目录。可以设置hive-site.xml 1javax.jdo.option.ConnectionURL=jdbc:derby:;databaseName=/home/yangql/app/hive/metastore_db;create=true hive配置连接mysql数据库 123456789101112131415161718192021222324<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop01:3306/hive?createDatabaseIfNotExist=true</value> <description> JDBC connect string for a JDBC metastore. To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL. For example, jdbc:postgresql://myhost/db?ssl=true for postgres database. </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>root</value> <description>password to use against metastore database</description> </property>

Spark两种提交方式Yarn-client and Yarn-cluster

Spark支持三种集群部署方式(Standalone,Mesos,Yarn),其中Master服务(Spark Standalone,Mesos Master,Yarn ResourceManager)决定哪些应用可以运行,在那个节点上运行,以及什么时候运行。Slave服务(Yarn NodeManager)运行在每个节点上,节点控制着Executor进程,同时监控作业的运行状态以及资源的消耗。Spark运行在Yarn上,有两种模式,Yarn-Client和Yarn-Cluster。通常情况下,Yarn-Cluster用于生产环境,Yarn-Client用于交互、调试。

Spark宽依赖与窄依赖

Spark中RDD的高效与DAG(有向无环图)有很大的关系,在DAG调度中需要对计算的过程划分Stage,划分的依据就是RDD之间的依赖关系。RDD之间的依赖关系分为两种,宽依赖(wide dependency/shuffle dependency)和窄依赖(narrow dependency)

Spark 工作原理及RDD

Spark是一种开源的分布式并行计算框架,Spark拥有Hadoop Mapreduce计算框架的优点。但是与Hadoop Mapreduce最大的不同就是:Hadoop Mapreduce分为两个阶段,map 和 reduce,两个阶段完了,就完了,在一个作业里能做的事情很少。而Spark是基于内存迭代计算的,可以分为N个阶段,一个阶段完了可以继续下一阶段的处理,而且Spark作业的中间结果可以保存到内存中,不用再频繁去HDFS或其它数据源读取数据。

Spark性能并行度

1. Spark的并行度spark作业中,各个stage的task的数量,代表了spark作业在各个阶段stage的并行度!当分配完所能分配的最大资源了,然后对应资源去调节程序的并行度,如果并行度没有与资源相匹配,那么导致你分配下去的资源都浪费掉了。同时并行运行,还可以让每个task要处理的数量变少。合理设置并行度,可以充分利用集群资源,减少个task处理数据量,而增加性能加快运行速度。

Spark性能调优之资源

性能调优的第一要点是分配和增加更多的资源,在一定范围内,资源的增加和性能的提升,是成正比的。所以在写完一个Spark作业后,最优的资源配置是性能调优的第一步,在此基础上,当你能分配的资源达到最大,无法再分配更多的资源时,才去考虑其它性能调优的点,如共享变量,kyro序列化等。我们从需要分配那些资源、在哪里分配资源以及分配资源后性能为何会得到提升三个方面来讨论这个主题。

Task未序列化(Task not serializable)问题分析及解决

在Spark程序中,在map等算子内部使用了外部定义的变量和函数,从而引发Task未序列化问题。其中最普遍的是当引用了某个类的成员函数或变量时,会导致这个类的所有成员(整个类)都需要支持序列化。虽然许多情形下,类使用了extends Serializable声明支持序列化,但是由于某些字段不支持序列化,仍然会导致整个类序列化时出现问题,最终导致出现Task未序列化问题。出现如下错误如下: