精华内容
下载资源
问答
  • Shark

    2019-10-28 10:15:53
    Shark
  • shark

    2019-10-24 03:46:24
    shark字体是一款用于写信
  • shark-源码

    2021-03-10 17:52:17
    shark
  • Left shark: not left shark

    2020-12-26 18:30:18
    <div><p>Consider this low priority, but it was brought up by a Googler that the video for the left shark is not actually the left one. It's the right now :)</p><p>该提问来源于开源项目:...
  • Shark Fighter字体

    2019-10-23 05:19:38
    Shark Fighter字体是一款用于杂体设计方面的字体
  • Shark fixes

    2020-12-27 18:15:54
    <div><p>Includes tear downs for hooks and OSD in shark missions, not sure if they created the bug reported about them (#598) but maybe? (I don't know enough about state maintenance in Lua). <p>...
  • <div><p>The Individual class in Algorithms/DirectSearch/Individual.h does not inherit from shark::ISerializable. This appears to be a mistake, as shark::Individual does implement a serialization call....
  • 匿名用户1级2019-01-07 回答下面是一个调试shark的例子,通过它,你可以大致了解shark的工作流程运行和测试到${tws}\bin目录下,首先运行...下面是一个Quick Start,翻译自Shark自带的Quick Start,精简了下,并修改...

    匿名用户

    1级

    2019-01-07 回答

    下面是一个调试shark的例子,通过它,你可以大致了解shark的工作流程

    运行和测试

    到${tws}\bin目录下,首先运行tns.bat,然后运行run.bat,接着运行runSA.bat,启动管理器,输入用户名admin,密码是enhydra,OK,进入管理器了。

    下面是一个Quick Start,翻译自Shark自带的Quick Start,精简了下,并修改了其中的几处错误:

    到“Package management”,点“Load"按钮,选择"test-JavaScript.xpdl",然后点"Load"或者双击 "test-JavaScript.xpdl" 。等shark载入该包到内存后,点"Exit"。

    到 "Process instantiation management",从左边树形列表中选择 "Package-test_js->Process definition-The Game"

    这是一个猜数字的游戏,有两个Player,系统开始生成一个随机数,然后Player可以输入一个数字,如果谁输入的数字更接近系统生成的随机数,他就的一份,游戏循环次数在游戏开始时输入。

    到 "User management" - "Users" ,点击"New"按钮。

    创建两个用户,分别是test1和test2,密码自己设置啦,这两个用户将用到游戏中

    到"User management" - "Mapping" sub-section,点击"Add"按钮.

    在左边选择"Player 1",右边选择"test1",点击"Apply" 按钮,然后点"Close"按钮

    同样对test2做同样的操作,不过得选择"Play 2"

    好了,准备开始这个游戏了,转到"Process instantiation management",选择”The Game" process,然后点"Instantiate"按钮。

    系统提示是否update some process variables。选择Yes,输入3,这里的3就是游戏循环次数。

    Disconnect当前用户,用test1登录,到'Worklist management',刷新一下,就可以看到work list有内容,点里面的"Accepted",然后点"Completed"按钮,问你是否update process varibles,点Yes,输入一个数字,这个就是Player自己输入的数字,输入后会跟系统生成的随机数进行比较的。

    好,对test2进行同样操作,操作结束后会产生“View Score” work list,这个是Player的得分,点“Accepted”,然后点“Completed",再点Yes就可以看到得分,当两个Player都completed view score后,就会进入新的循环,直到达到循环次数

    展开全文
  • Shark-Bot-源码

    2021-03-20 08:22:22
    Shark-Bot
  • baby_shark-源码

    2021-02-27 07:47:49
    baby_shark baby_shark允许系统管理员委派权限,以赋予某些用户(或用户组)以root用户或其他用户身份运行某些(或全部)命令的能力,同时提供命令及其参数的审核跟踪。 描述 对于我们学校ETNA的项目,我们必须在c...
  • 本文主要列出项目中使用的Shark API ,并列出已知的Shark1.1和shark2.0(TWS)的差别,不定时更新。Shark1.1和shark2.0的设计上的总体差别1.事务:Shark2.0支持jotm 所以在API中把所有方法中带有 SharkTransaction 参数...

    本文主要列出项目中使用的Shark API ,并列出已知的Shark1.1和shark2.0(TWS)的差别,不定时更新。

    Shark1.1和shark2.0的设计上的总体差别

    1.事务:

    Shark2.0支持jotm 所以在API中把所有方法中带有 SharkTransaction 参数的重载版本都去掉了,转而使用jotm来对事物进行控制,这么做的后果就是你要像shark的demo中一样在调用shark API时都要手动启动一个事务,不然会报 Transaction is not begun(没有事务曾经被启动)的错误。这样很麻烦,因为Spring 提供了一个jotm的事务管理器所为我在项目中使用了Spring声明式事务,这样就不用在代码中夹杂着jotm事务处理的代码了,有关这方式的使用我会在框架融合部分的文章中加以说明。

    2.管理接口:

    Shark2.0去掉了 AdminInterface接口和取得该接口实例的方法Shark.getInstance().getAdminInterface(),(在shark1.1中该接口提供取得其它管理接口的方法,如AdminMisc、PackageAdministrator等),而把AdminInterface的方法直接拿到了Shark.getInstance()中去。

    也就是说在shark1.0中要取得AdminMisc的代码为

    Shark.getInstance().getAdminInterface().getAdminMisc()

    而在Shark2.0中是这样的

    Shark.getInstance().getAdminMisc()

    3.Shark用户管理

    在shark1.1中用个用户管理的接口:UserGroupAdministration,在文档中有明确的体现,用法如下

    UserGroupAdministration ugAdmin = Shark.getInstance()

    .getAdminInterface()

    .getUserGroupAdministration();

    ugAdmin.createGroup("developers","sweat-shop");

    ugAdmin.createUser("developers",

    "user",

    "secret",

    "Jane",

    "Doe",

    "some@email.address");

    System.out.println("Group and user created!");

    可以使用这个类来管理用户、用户组、权限,之后使用Sharkconnection的connect方法来登录,如果用户名或密码错误会抛出异常。但是在Shark2.0中这个UserGroupAdministration 被去掉了,在shark的文档中也没找到可以达到相同功能的接口,而且Sharkconnection的connect方法表现的也十分怪异,当使用connect方法时无论你提供的密码是对是错都会成功返回Sharkconnection而且不抛出任何异常,如果用户名也是错误的话,那么Shark 引擎会创建这个用户。后来想想设计者也对的,因为connect方法是“连接”而不是“验证”,那么shark2.0怎样来管理用户、用户组、权限和用户的登录呢。这个问题我找了很久后来终于在shark 的源码中找到了答案原来shark2.0提供了另一个接口来做这些事,那就是org.enhydra.shark.api.admin.UserGroupManagerAdmin(注意,这个包下的类在Shark API文档中并没有被提到,但是文档中有对它的父类org.enhydra.shark.api.internal.usergroup.UserGroupManager的说明,方法差不多大家可以参考一下 ),但是怎么得到这个接口的实例呢(为了这个问题我可是看了好长时间shark的源码,你们有福了有我告诉你们),我根据shark源码改动后的方法如下,可以返回这个接口的实例:

    publicUserGroupManagerAdmin getUserGroupAdmin() {

    UserGroupManagerAdmin userGroupAdmin =null;

    try{

    Object ama = Shark.getInstance().getPlugIn(

    SharkConstants.PLUGIN_USER_GROUP);

    if(amainstanceofUserGroupManagerAdmin) {

    userGroupAdmin = (UserGroupManagerAdmin) ama;

    }

    }catch(Exception e) {

    }

    returnuserGroupAdmin;

    }

    有了这个接口用可以实现用户管理相关的功能了,如验证用户的登录:

    if(getUserGroupAdmin().validateUser(

    connectInfo.getUserIdentification(), connectInfo.getPassword())) {

    System.out.println("********************Vaildateuser is true");

    }else{

    System.out.println("********************Vaildateuser is False");

    }

    注:因为加入了单独的验证功能,所以Shark1.1中的connect方法也就不会再抛出ConnectFailed, NotConnected 异常了。

    4.管理接口中的用户认证

    在shark1.1中有的管理接口在使用之前需要对登录的用户进行认证如ExecutionAdministration在使用之前要有如下代码(shark2.0的SharkConnection的connect方法的参数也进行了改动):

    privateExecutionAdministration ea =null;

    ea = Shark.getInstance().getAdminInterface()

    .getExecutionAdministration();

    ea.connect(userName, password, SharkAdapter.engineName,null);

    这样在使用时不但要对SharkConnection进行登录而且还需要对使用到的管理接口进行登录,  而在Shark2.0中则不需要这么做了,shark2.0去掉了ExecutionAdministration 等管理接口的connect方法,可以在获得管理接口后直接调用管理接口的方法,而在方法中加入了一个用户会话信息的参数:WMSessionHandle.而这个参数可以 通过SharkConnection 的getSessionHandle()获得。代码如下(项目中的代码片断,取得所有加载的包,getSharkLogon().getSConn()返回的是已认证的SharkConnection ):

    PackageAdministration pa = Shark.getInstance()

    .getPackageAdministration();

    packageInfos.clear();

    String pkIDs[] = pa.getOpenedPackageIds(getSharkLogon().getSConn()

    .getSessionHandle());

    5.异常处理:

    不知是什么原因Shark2.0的API方法不再抛出某些Shark自定义的异常,目前本人只发现好像BaseException不会再被抛出了,而是直接抛出Exception类的异常,而某些方法还是会抛出Shark自定义的异常,如complete会抛出CannotComplete异常,我们在使用时可能捕获不同的异常进行不同的处理是很方便的如(代码中使用了JSF,shark版本为1.1):

    publicString logonActive() {

    FacesContext facesContext = FacesContext.getCurrentInstance();

    try{

    LogonInfo logonInfo =newLogonInfo();

    logonInfo.logon(userName, password);

    HttpServletRequest request = (HttpServletRequest) facesContext

    .getExternalContext().getRequest();

    HttpSession session = request.getSession();

    session.setAttribute("logonInfo", logonInfo);

    return"success";

    }catch(BaseException e) {

    FacesMessage msg = MessageFactory.getMessage(facesContext,

    "error_cannot_login","");

    msg.setSeverity(FacesMessage.SEVERITY_ERROR);

    facesContext.addMessage(null, msg);

    return"error";

    }catch(ConnectFailed e) {

    FacesMessage msg = MessageFactory.getMessage(facesContext,

    "error_userorpassword","");

    msg.setSeverity(FacesMessage.SEVERITY_WARN);

    facesContext.addMessage(null, msg);

    return"failure";

    }catch(NotConnected e) {

    FacesMessage msg = MessageFactory.getMessage(facesContext,

    "error_cannot_login","");

    msg.setSeverity(FacesMessage.SEVERITY_ERROR);

    facesContext.addMessage(null, msg);

    return"error";

    }

    }

    但是shark1.1中的异常类并没有被删除,通过import还可以正常导入使用只是shark API不会再抛出这种异常了。

    具体的API用法及Shark1.1同2.0的差别:

    本来想在这部分写一些shark的API方法的,可是发现这么做不如只接去看shark API的javadoc(安装shark自带,很全)所以只列出某些用法上有说道的方法

    待继...........

    展开全文
  • vcpkg install Shark

    2020-12-29 20:32:41
    <p>I wish Shark could be installed via <a href="https://blogs.msdn.microsoft.com/vcblog/2018/04/24/announcing-a-single-c-library-manager-for-linux-macos-and-windows-vcpkg/">vcpkg</a>.</p><p>该提问来源...
  • Land Shark字体下载

    2020-12-26 06:22:23
    该文档为Land Shark字体下载,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • matlab开发-Shark

    2019-08-21 11:47:32
    matlab开发-Shark。水下航行器非线性6自由度模型
  • Shark typhoon problem

    2020-11-26 10:49:05
    <div><p>When casting a spell the shark token instantly dies no mater what </p><p>该提问来源于开源项目:magefree/mage</p></div>
  • Shark Typhoon Bugged

    2020-12-06 00:37:35
    <div><p>Shark Typhoon doesn't allow me to cast it as an enchantment, only as a cycling card.</p><p>该提问来源于开源项目:magefree/mage</p></div>
  • Blue Shark no connect

    2020-11-20 20:35:38
    I have blueshark, but when I connect my PC via bluetooth and enter the pin (1234), blueshark is connected but disconnected <p><strong>To Reproduce 1. Turn on the blueshark battery and bluetooth ...
  • shark笔记

    2008-01-17 23:36:48
    关于shark的一些东西
  • Shark-s-Library-源码

    2021-03-19 21:38:36
    Shark-s-Library
  • shark-plugin-crx插件

    2021-03-09 23:44:06
    适用于IBU的Shark Chrome扩展程序 shark-plugin是携程旅行网chrome的扩展。 v1.9.10:修复了错误v1.9.9:修复了一些错误v1.9.7:更新了徽标v1.9.6:兼容的开发环境v1.9.5:仅内部人员可以登录v1.9.3:修复了一些错误...
  • shark 简介

    千次阅读 2014-04-17 12:04:15
    1、shark 是什么?

    简介


    Shark是一个新的数据分析系统,在集群上进行查询处理和复杂分析。Shark使用一种新的分布式内存抽象,为SQL查询和复杂分析函数提供了统一的运行引擎,并能够有效的容错。这种新的分布式内存抽象使得shark执行SQL查询的速度比Hive100倍,执行机器学习算法比Hadoop100倍。与之前的系统不同,shark在取得如此良好性能的同时尽可能的保留了类似于mapreduce的执行框架,以及细粒度的容错特性。为了有效的执行SQL查询,shark提供了面向列存储,查询中重计划等机制。Shark在速度上能够与MPP分析数据库相当,同时又具有MPP分析数据库不具备的容错和复杂分析的能力。

    Shark基本上就是在Spark的框架基础上提供和Hive一样的HiveQL命令接口,为了最大程度的保持和Hive的兼容性,Shark使用了HiveAPI来实现query ParsingLogic Plan generation,最后的PhysicalPlan   execution阶段用Spark代替Hadoop MapReduce。通过配置Shark参数,Shark可以自动在内存中缓存特定的RDD,实现数据重用,进而加快特定数据集的检索。同时,Shark通过UDF用户自定义函数实现特定的数据分析学习算法,使得SQL数据查询和运算分析能结合在一起,最大化RDD的重复使用。


    系统概述


    Shark既支持SQL查询处理,也支持机器学习函数。Shark是与Hive兼容的,用户可以无需修改Hive的查询以及数据就能在shark上执行。

    由于与Hive的兼容,shark可以在任何支持Hadoop存储API的系统上进行查询,包括HDFSAmazon S3等。Shark也支持多种数据格式,例如:textjsonxml等。Shark继承了Hiveschema-on-read和嵌套数据类型。

    此外,用户可以选择将部分数据存储到shark的内存中,以便进行快速分析处理。


     


    上图显示了shark集群的体系结构,包括一个master节点和一组worker节点。数据仓库的元数据存储在一个外部事务性数据库中。Shark是建立在Spark之上的,Spark是一个类似于Mapreduce的集群计算引擎。当一个查询提交到master时,shark将该查询转换成一个用RDD表示的操作树。这些RDDSpark转化成一张任务的图,worker节点来执行这些任务。

     



    上图显示了shark的体系结构,特点如下:

    1、 物理计划在Spark上执行;

    2、 依靠Spark的快速执行、容错性及RDD

    3、 尽可能的充分利用Hive的代码:将Hive生成的逻辑计划转换为Spark的执行图(execution graph);

    4、 与Hive的兼容性:无需修改就可以利用hivemetadataHDFS上执行HiveQL

    RDD上执行SQL查询

    Shark与传统的RDBMS一样,执行SQL查询一般都经过以下3个过程:解析查询语句、生成逻辑计划、生成物理计划。给定一个查询,Shark使用Hive的查询编译器解析查询语句并生成对应的抽象语法树,然后将这棵树转化为逻辑计划及基本的逻辑优化(比如,预测下推),以上这些,SharkHive都使用了相同的方法。Hive将把操作转化为有一系列MapReduce程序组成的物理计划,而对于Shark,它的优化器将应用额外的优化规则(如,对于关键字LIMIT对应的优化规则)到各个独立的分区(individual partitions)中,并且创建由一序列在RDDs上的转化操作构成的物理计划,而不是MapReduce Jobs,然后利用在Spark中已经实现的operators(如,mapreduce)或在Shark中实现的operators(如 broadcast joins)执行相应的物理计划。

    系统拓展

    尽管通过这些基本的方法可以在Spark上执行SQL语句,但怎样做到高效率是一个挑战。UDF(用户自定义函数)的流行以及复杂的分析函数在Shark上的使用,很难再编译的时候就确定相应的优化查询计划,特别在没有经过ETL处理的新数据上。另外,尽管有了这样一个计划,愚蠢的在Spark或其他MapReduce环境下也是低效的。为了高效的存储相关的数据以及执行SQL,对Spark引擎进行了一些如下拓展。

    Ø Partial DAG ExecutionPDE

    为了在分布式数据集上支持动态查询优化,拓展了Spark支持PDE,这项技术允许使用在运行时收集的统计数据,动态的改变查询计划。目前,PDE主要用在Shuffle操作阶段边界上,这里将进行数据的交换及重新分区,都是Shark上典型的高消耗操作。默认情况下,在shuffle之前,Spark将在内存中实例化map任务的输出,如果有必要才输出到磁盘上,reduce任务将随后获取这些输出。

    PDE通过以下两步修改这种机制。首先,在实例化map输出的时收集总体可定制的统计信息和每个分区的粒度;然后,将依赖这些统计值,通过选择不同的operators或改变它们的参数(如,并行度)来修改DAG

    Ø Columnar Memory Store




    SharkSpark的内存存储机制上实现了基于列的内存存储。Shark使用JVM原始的数组存储原始类型(primitive types)的所有列,Hive支持的复杂数据类型(如,maparray),将被序列化并由关联着的字节数组进行存储。每一列都只创建了一个JVM对象,能够实现高效的空间利用、GCs和压缩数据,减轻了deserialize的负担。

    Ø Distributed Data Loading

    除了查询的执行,Shark还使用Spark的执行引擎实现了分布式数据加载。在加载的过程中,表将被分割成小的partitions,这些partitions将被不同的tasks根据加载模式,提取相应的数据并以列的形式存储在内存中。每一个数据加载的task将跟踪metadata来决定分区中的每一列是否应该压缩,如:若某列不同的值低于某个阈值,对应的数据加载task将在此列上进行压缩处理。每个task根据加载数据的情况,选择合适的处理优化策略,而不是所有的task都统一使用共同的策略,保证在加载过程中实现最大的并行度。需要注意的是,RDD的血统并不会记录这些处理的策略。

    Ø Data Co-partitioning

    Shark为了在后面的查询中快速的实现join操作,在数据加载过程中,允许在共同的主键上进行co-partitioning。在分布式文件系统(如,HDFS)中,存储系统基于模式判别,不能实现co-partitioning。在join两个co-partitioned tables时,Shark的优化器将会创建一个避免了高耗shuffleDAG并且代替map任务执行join。在Shark中可以使用DISTRIBUTE BY进行实现:

    CREATE TABLE l_mem TBLPROPERTIES ("shark.cache"=true)

    AS SELECT * FROM lineitem DISTRIBUTE BY L_ORDERKEY;

    CREATE TABLE o_mem TBLPROPERTIES ("shark.cache"=true,"copartition"="l_mem") AS SELECT * FROM order DISTRIBUTE BY O_ORDERKEY;

    Ø Partition Statistics and Map Pruning

    存储文件系统中的数据,很有可能在一列或几列上存在在聚集的性质,Map Pruning就是建立在具有聚集特性的数据上进行数据分区修剪的过程。Shark的内存将数据存储成小的分区(block),每个block都包含了一个或几个逻辑上具有聚集性质的组,而Shark可以避免扫描那些不在查询范围内的block

    为了充分利用这些在某些列上具有聚集特性的数据,Shark的内存存储了每个worker在数据加载过程中记录的统计信息,包括每一列值的范围。如果某列上值不同的数较少,还将统计这些不同的值,这些统计值将在master中汇总,实现查询过程中修剪分区。

    支持机器学习 

    Shark的一个重要设计目标就是能处理高效SQL查询和复杂的机器学习。Shark遵循将计算移到数据处的原则,支持机器学习。这样设计的原因是选择了Spark作为执行引擎、RDD作为operators操作的主要数据结构。Shark除了执行SQL查询并返回其结果外,还允许查询返回代表了查询计划的RDD,用户可以使用返回的RDD进行分布式计算。

    Shark会在集群上自动的并行执行上述的mapmapRowsreduce函数,并且master程序将收集reduce函数的输出进行更新操作。目前Shark提供一些基本的机器学习算法,包括linear regressionlogistic regressionk-means。在大部分情况下,用户只需要实现一个mapRows函数提取待分析的数据,然后调用上述提供的算法。

    除了语言的集成,另一个使用RDDs作为operators操作的数据结构关键益处是执行引擎的集成。这个共同的抽象使得机器学习计算和SQL查询可以共用workers,并且可以通过数据缓存避免了数据移动带来的负载。


    转自: http://blog.csdn.net/wangfeinilin/article/details/22746161

    展开全文
  • shark for root

    热门讨论 2012-11-09 09:50:06
    shark for root 传说中的抓包工具我找了好久才找到
  • shark 安装

    千次阅读 2014-02-14 11:28:24
    本文介绍在计算机集群上如何启动和运行Shark。如果对Amazon EC2上运行Shark感兴趣,请点击这里查看如何使用EC2脚本快速启动预先配置好的集群。 依赖: 注意:Shark是一个即插即用的工具,所以可以在现有的Hive...

    本文介绍在计算机集群上如何启动和运行Shark。如果对Amazon EC2上运行Shark感兴趣,请点击这里查看如何使用EC2脚本快速启动预先配置好的集群

    依赖:

    注意:Shark是一个即插即用的工具,所以可以在现有的Hive数据仓库之上运行,不需要您对现有的部署做出任何修改。

    在集群上运行Shark需要一下几个外部组件:

    • Scala 2.9.3
    • Spark 0.7.2
    • 兼容的JAVA运行时环境:OpenJDK 7, Oracle HotSpot JDK 7,或者 Oracle HotSpot JDK 6u23+
    • Shark专用的 Hive JAR (基于Hive 0.9),包括在Shark发布包里。
    • HDFS 集群:在这里不介绍如何安装,可以查看我的博文.

    Scala

    如果系统里没有安装Scala 2.9.3,可以按提示下载:

    $ wget http://www.scala-lang.org/downloads/distrib/files/scala-2.9.3.tgz

    $ tar xvfz scala-2.9.3.tgz

    Spark

    采用Spark的单独部署模式运行Shark

    部署细节:|http://spark-project.org/docs/latest/spark-standalone.html).也可以查看我翻译的博文

    下载Spark:

    $ wget http://spark-project.org/files/spark-0.7.2-prebuilt-hadoop1.tgz  # Hadoop 1/CDH3

    或者

    $ wget http://spark-project.org/files/spark-0.7.2-prebuilt-cdh4.tgz    # Hadoop 2/CDH4

    解压缩:

    $ tar xvfz spark-0.7.2-prebuilt*.tgz

    编辑 spark-0.7.2/conf/slaves添加集群中Slaves的主机名称,每一行对应一个Salve

    编辑spark-0.7.2/conf/spark-env.sh设置SCALA_HOMESPARK_WORKER_MEMORY

    export SCALA_HOME=/path/to/scala-2.9.3

    export SPARK_WORKER_MEMORY=16g

    SPARK_WORKER_MEMORY Spark在每一个节点上可用内存的最大,增加这个数值可以在内存中缓存更多的数据,但是一定要记住给Slave的操作系统和其他服务预留足够的内存。

    Shark

    下载Shark 0.2.1发布包,里边包括 shark-0.2.1hive-0.9.0-bin.

    $ wget http://spark-project.org/download/shark-0.7.0-hadoop1-bin.tgz  # Hadoop 1/CDH3

    或者

    $ wget http://spark-project.org/download/shark-0.7.0-hadoop2-bin.tgz  # Hadoop 2/CDH4

    解压缩:

    $ tar xvfz shark-0.7.0-*-bin.tgz

    编辑shark-0.7.0/conf/shark-env.sh设置HIVE_HOME, SCALA_HOMEMASTER环境变量(参考如下):

    export HADOOP_HOME=/path/to/hadoop

    export HIVE_HOME=/path/to/hive-0.9.0-bin

    export MASTER=spark://<MASTER_IP>:7077

    export SPARK_HOME=/path/to/spark

    export SPARK_MEM=16g

    source $SPARK_HOME/conf/spark-env.sh

    source命令通常用于重新执行刚修改的初始化文件,使之立即生效)

    最后一行是为了避免重复设置SCALA_HOME。一定要确保SPARK_MEM的数值不能超过前面设置的SPARK_WORKER_MEMORY的数值.

    如果是在现有的Hive上运行Shark,确定设置 HIVE_CONF_DIR (shark-env.sh文件中)指向你的配置文件夹.也可以,复制 Hive XML配置文件到Sharkhive-0.9.0-bin/conf配置文件夹内,比如:

    cp /etc/hive/conf/*.xml /path/to/hive-0.9.0-bin/conf/

    复制 Spark Shark目录到所有的slaves.前提是master的用户可以实现无密码SSH登录到所有的slaves.例如:

    $ while read slave_host; do

    $   rsync -Pav spark-0.7.2 shark-0.7.0 $slave_host

    $ done < /path/to/spark/conf/slaves

    运行 Spark的集群启动脚本,启动集群:

    $ cd spark-0.7.2

    $ ./bin/start_all.sh

    基于CDH4/Hadoop2配置Shark

    The newest versions of require additional configuration options.

    新版本的Hadoop需要额外的配置选项。在Hive的配置文件(hive-site.xml)中进行配置:

    • fs.default.name: 指向HDFS namenode.例如:hdfs://myNameNode:8020/
    • fs.defaultFS: fs.default.name设置为同样值。
    • mapred.job.tracker:设置为JobTracker,格式为host:port。如果仅仅运行Spark可以设置为"NONE"。注意:一定要明确设置这个选项,即使不使用JobTracker.

    测试

    使用如下命令,启动Shark

    $ ./bin/shark-withinfo

    关于Spark单独模式的更多脚本细节参考这里

    To verify that Shark is running, you can try the following example, which creates a table with sample data:

    使用下面的命令,创建一个简单的表格就可以确认一下Shark是否可以运行。

    CREATE TABLE src(key INT, value STRING);

    LOAD DATA LOCAL INPATH '${env:HIVE_HOME}/examples/files/kv1.txt' INTO TABLE src;

    SELECT COUNT(1) FROM src;

    CREATE TABLE src_cached AS SELECT * FROM SRC;

    SELECT COUNT(1) FROM src_cached;

    更详细的学习Shark,可以查看官方网站的用户指南


    Shark简介

    Shark即Hive on Spark,本质上是通过Hive的HQL解析,把HQL翻译成Spark上的RDD操作,然后通过Hive的metadata获取数据库里的表信息,实际HDFS上的数据和文件,会由Shark获取并放到Spark上运算。Shark的特点就是快,完全兼容Hive,且可以在shell模式下使用rdd2sql()这样的API,把HQL得到的结果集,继续在scala环境下运算,支持自己编写简单的机器学习或简单分析处理函数,对HQL结果进一步分析计算。

    Shark速度快的原因除了Spark平台提供的基于内存迭代计算外,在设计上还存在对Spark上进行了一定的改造,主要有

      - partial DAG execution:对join优化,调节并行粒度,因为Spark本身的宽依赖和窄依赖会影响并行计算和速度

      - 基于列的压缩和存储:把HQL表数据按列存,每列是一个array,存在JVM上,避免了JVM GC低效,而压缩和解压相关的技术是Yahoo!提供的

    其他特性和设计要点请参看论文Shark: SQL and Rich Analytics at scale

    总结来说,Shark是一个插件式的东西,在我现有的Spark和Hive及hadoop-client之间,在这两套都可用的情况下,Shark只要获取Hive的配置(还有metastore和exec等关键包),Spark的路径,Shark就能利用Hive和Spark,把HQL解析成RDD的转换,把数据取到Spark上运算和分析。在SQL on Hadoop这块,Shark有别于Impala,Stringer,而这些系统各有自己的设计思路,相对于对MR进行优化和改进的思路,Shark的思路更加简单明了些。


    Shark部署

    Shark Wiki上发布了两个主要版本,shark-0.7.0-hadoop1-bin.tgz和shark-0.7.0-hadoop2-bin.tgz。shark-0.7.0-hadoop1-bin.tgz适用于CDH3,shark-0.7.0-hadoop2-bin.tgz适用于CDH4,他们都使用hive-0.9.0进行了编译,使用的Spark是0.7.2的。相对来说,hive的版本比较老,想要支持0.11.0这样更新的版本的话需要自己重新编译Shark。在github上,现在Shark的master分支已经开始支持未发布的Spark0.8版本,编译注意的地方会在下一节讲。

    Shark的部署参看https://github.com/amplab/shark/wiki/Running-Shark-on-a-Clusterhttps://github.com/amplab/shark/wiki/Running-Shark-Locally。首先要选择适合自己Hadoop集群版本的shark-0.7.0-hadoopX-bin.tgz

    解压出来的hive-0.9.0配置在shark-env.sh的HIVE_HOME,同时还可以额外指定HIVE_CONF的目录,一般就指定自己已有的可以连接hadoop的hive conf目录。其余的SPARK_MEM, SPARK_HOME, SCALA_HOME就不说了。

    用bin/shark-withinfo启动shark,可以看到INFO信息,shark首先启动自己的CLI,然后会启动Hive,再启动Spark,之后就可以用HQL测试Shark可用与否。

    在配置好各个HOME后,如果跑在common hadoop上,当你进行select这样和HDFS数据打交道的操作时,会报如下的版本错误

    [html] view plaincopy
    1. ERROR shark.SharkDriver: FAILED: Hive Internal Error: java.lang.RuntimeException(java.io.IOException: Failed on local exception: java.io.IOException: Response is null.; Host Details : local host is: "namenode.hadoop.game.yy.com/xxx.xxx.xx.xxx"; destination host is: "xxx.xxx.com":pppp;   

    具体见Shark Group的这个帖。目前,我尝试了很多也没有找到解决办法,特别是像我用的hadoop-client还是公司自己改装过的,相对的Hive的几个主要jar包(hive-metastore-xx, hive-exec-xx)也被改动了,导致不但shark发布的包不能直接使用,连使用shark重新根据自己的hive编译一遍都编译不过。


    最后再提醒几个可能发生的常见错误

    1. HIVE_HOME/lib下要有jdbc驱动包,比如mysql-driver的jar包,否则会报错。

    2. HIVE_HOME/lib下的hive-metastore-xx.jar,可能太旧,不适应自己的hadoop集群,可以替换成自己的hive/lib下的metastore包,否则会报错,HQL执行不成功。替换后至少在执行use db; show tables; 这样的HQL没有问题。

    3. 有一个错误是:

    [html] view plaincopy
    1. java.lang.UnsatisfiedLinkError: org.apache.hadoop.security.JniBasedUnixGroupsMapping.getGroupForUser(Ljava/lang/String;)[Ljava/lang/String;  
    后来我根据hadoop jira上的这个相似的问题https://issues.apache.org/jira/browse/HADOOP-9232,受到启发,解决方案是对shark目录下lib_manage/jars/org.apache.hadoop/hadoop-common内的jar包内的配置文件core-site.xml,去掉hadoop.security.group.mapping的相关配置,就OK了。


    Shark编译

    主要参考官方文档:https://github.com/amplab/shark/wiki/Building-Shark-from-Source-Code。在下载版本的时候,一定要注意下载配套的源码。我第一次编译的时候用了shark-master的源码,就编译失败了,因为它依赖Spark-0.8版本,而这版本还未发布。应该获取branch-0.7下的版本,

    [html] view plaincopy
    1. git clone https://github.com/amplab/shark.git -b branch-0.7 shark-0.7  

    除了指定下SCALA_HOME和HIVE_HOME外,最好再指定下SPARK_HOME。最后sbt/sbt package,利用sbt进行打包,需要蛮长的时间。

    我尝试了依赖公司的hive包编译,失败了,报了77个error,原因是Shark的源码里很多依赖于hive的接口,有些有,有些没有,所以我又尝试了依赖hive-0.9.0的包编译,成功了,没有报错。虽然我想尝试编译适合自己公司集群的shark失败了,但是我还是完成了这条路的探索。目前我如果想使用Shark的话,只能自己部一套CDH的hadoop和hive了。哎。


    展开全文
  • shark恒破解

    2013-09-18 09:35:54
    shark恒破解教程%28最全版%29%2B附件.
  • Shark简介

    千次阅读 2014-04-01 17:32:22
    Shark是一个新的数据分析系统,在集群上进行查询处理和复杂分析。Shark使用一种新的分布式内存抽象,为SQL查询和复杂分析函数提供了统一的运行引擎,并能够有效的容错。这种新的分布式内存抽象使得shark执行SQL查询...
  • <div><p>i wanted to know if there is any branch of iron-router that is compatible with the current meteor shark</p><p>该提问来源于开源项目:iron-meteor/iron-router</p></div>
  • <div><p>shark installed via conda crashes on our server. Since it is quite an old server, we suspect it is due to the <code>-march=native</code> flag. With this PR I update the Makefile patch ...
  • Most Dangerous Shark

    2020-09-17 22:00:52
    Semyon participates in the most prestigious competition of the world ocean for the title of the most dangerous shark. During this competition sharks compete in different subjects: speed swimming, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,571
精华内容 1,028
关键字:

Shark