阿里云E-MapReduce-常见问题指南-D_第1页
阿里云E-MapReduce-常见问题指南-D_第2页
阿里云E-MapReduce-常见问题指南-D_第3页
阿里云E-MapReduce-常见问题指南-D_第4页
阿里云E-MapReduce-常见问题指南-D_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、E-MapReduce常见问题E-MapReduce/常见问题E-MapReduce/常见问题 PAGE 17 PAGE 17常见问题常见问题作业和执行计划的区别在Aliyun E-MapReduce中,要运行作业,需要有分成两个步骤,分别是:创建作业在E-MapReduce产品中,说创建一个作业,实际上是创建一个作业运行配置,它并不能被直接运行。既如 果在E-MapReduce中创建了一个作业,实际上只是创建了一个作业如何运行的配置,这份配置中包括该作 业要运行的jar包,数据的输入输出地址,以及一些运行参数。这样的一份配置创建好后,给它命一个名,既定 义了一个作业。当你需要调试运行作业的时

2、候就需要执行计划了。创建执行计划执行计划,是将作业与集群关联起来的一个纽带。通过它,我们可以把多个作业组合成一个作业序列,通过它 我们可以为作业准备一个运行集群(或者自动创建出一个临时集群或者关联一个已存在的集群),通过它我们 可以为这个作业序列设置周期执行计划,并在完成任务后自动释放集群。我们也可以在他的执行记录列表上查 看每一次执行的执行成功情况与日志。如何查看作业日志在E-MapReduce系统里,系统已经将作业运行日志按照jobid的规划上传到OSS中(路径由用户在创建集群时 设置),用户可以直接在网页上点击查看作业日志。如果用户是登录到master机器进行作业提交和脚本运行等,则日志

3、根据用户自己的脚本而定,用户可以自行规划。直接在OSS上查看日志用户也可以直接从OSS上直接查找所有的日志文件,并下载。但是因为OSS不能直接查看,使用起来会比较麻 烦一些。 如果用户打开了日志,并且指定了一个OSS的日志位置,那么作业的日志要如何找到呢? 例如对下面这个保存位置OSS:/mybucket/emr/spark首先来到执行计划的页面,找到对应的执行计划,点击运行记录进入运行记录页面在运行记录页面找到具体的哪一条执行记录,比如最后的一条执行记录。然后点击它对应的执行集 群查看这个执行集群的ID然后再OSS:/mybucket/emr/spark目录下寻找OSS:/mybucket/

4、emr/spark/集群ID在OSS:/mybucket/emr/spark/集群ID/jobs 目录下会按照作业的执行ID存放多个目录,每一个目录下存放了这个作业的运行日志文件。集群、执行计划以及运行作业的计时策略集群的计时策略在集群列表里可以看到每个集群的运行时间,该运行时间的计算策略为 运行时间 = 集群释放时刻 - 集群开始构建时刻。即集群一旦开始构建就开始计时,直到集群的生命周期结束。执行计划的计时策略:在执行计划的运行记录列表,可以看到每次执行记录运行的时间,该时间的计时策略总结为两种情况:1.如果执行计划是按需执行的,每次执行记录的运行过程涉及到创建集群、提交作业运行、释放集群。

5、所以按需执行计划的运行时间计算策略为,运行时间 = 构建集群的时间 + 执行计划包含所有作业全部运行结束的总耗时 + 集群释放的时间。2.如果执行计划是关联已有集群运行的,整个运行周期不涉及到创建集群和释放集群,所以其运行时 间 = 执行计划包含所有作业全部运行结束的总耗时。作业的计时策略:这里的作业指的是被挂载到执行计划里面的作业。在每条执行计划运行记录右侧的查看作业列表点击 进去可以看到该作业。这里每个作业的运行时间的计算策略为,运行时间 = 作业运行结束的实际时间- 作业开始运行的实际时间。作业运行开始(结束)的实际时间指的是作业被Spark或hadoop集群实际开始调度运行或运行结束的

6、时间点。读写ODPS时,抛出java.lang.RuntimeException.Parse responsed failed: .。检查odps tunnel endpoint是否正确,如果写错会出现这个错误。多个ConsumerID消费同一个Topic时出现TPS不一致问题。有可能这个Topic在公测或其他环境创建过,导致某些Consumer组消费数据不一致。请在工单系统中将对应的Topic和ConsumerID提交到ONS处理。E-MapReduce中能否查看作业的Worker上日志?可以。前置条件:是创建集群时发开保存日志选项。查看日志位置:执行计划列表-点击运行记录-执行 记录-点击

7、查看作业列表-作业列表-点击查看作业Worker实例。例如:CREATE例如:CREATEEXTERNALTABLEstorage_log(contentSTRING)PARTITIONEDBY(dsSTRING) ROW FORMATDELIMITEDFIELDS TERMINATED BY tSTORED AS TEXTFILELOCATION oss:/xxx:xxxx/biz-logs/airtake/pro/storage;hive select * from storage_log; OKTime taken: 0.3 seconds创建完外部表后没有数据实际上Hive并不会自动关

8、联指定目录的partitions目录,您需要手动操作,例如:alter table storage_log add partition(ds=123); OKalter table storage_log add partition(ds=123); OKTime taken: 0.137 seconds hive select * from storage_log; OKabcd 123efgh 123Spark Streaming作业运行一段时间后无故结束。首先检查Spark版本是否是1.6之前版本。Spark1.6修复了一个内存泄漏的BUG,这个BUG会导致container内 存超用然

9、后被kill掉(当然,这只是可能的原因之一,不能说明Spark1.6不存在任何问题)。此外,检查自己的 代码在使用内存上有没有做好优化。Spark Streaming作业已经结束,但是E-MapReduce控制台显示作业还处于运行中状态检查Spark Streaming作业的运行模式是否是yarn-client,若是建议改成yarn-cluster模式。E- MapReduce对yarn-client模式的Spark Streaming作业的状态监控存在问题,会尽快修复。Exception in thread main java.lang.RuntimeException: java.lang

10、.ClassNotFoundException: Class com.aliyun.fs.oss.nat.NativeOssFileSystem not found在Spark作业中读写OSS数据时,需要将E-MapReduce提供的SDK打进作业Jar包中,具体操作请参考:开发手 册-Spark-开发准备。作业读写OSS数据怎么传AccessKeyId和AccessKeySecret参数最简单的办法就是使用完整OSS URI,请查看:开发手册-开发准备。Error: Could not find or load main class检查作业配置中作业jar包的路径协议头是否是ossref,若

11、不是请改为ossref。集群机器分工使用说明Slave(或者Worker)节点。其中Master节点不参与数据存储和 计算任务,Slave节点用来存储数据和计算任务。例如3台4核8G机型的集群,其中一台机器用来作为Master节 点,另外两台用来作为Slave节点,也就是集群的可用计算资源为2台4核8G机器。Spark接Flume时出现内存超用问题检查是否是以Push-based方式接收数据,若不是,请尝试改成Push-based方式接收数据。参考文档。Causedby:java.io.IOException:Inputstreamcannotberesetas 5242880byteshav

12、ebeenwritten,exceedingtheavailablebuffer size of524288(OSS)网络连接重试时缓存不足的BUG请,使用1.1.0版本以上的emr-sdk。Failed to access metastore. This class should not accessed in .apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiv

13、eMetaStoreClient首先,Spark处理Hives数据需要作业的执行模式为yarn-client(local也行),不能为yarn-cluster,否则会报 上述异常。其次,作业jar中引入一些第三方的包也有可能导致Spark运行期间报上述异常。如何在MR作业中使用本地共享库mapred.child.java.optsmapred.child.java.opts-Xmx1024m -Djava.library.path=/usr/local/share/mapreduce.admin.user.envLD_LIBRARY_PATH=$HADOOP_COMMON_HOME/lib/n

14、ative:/usr/local/lib只要加上你所需的库文件即可。如何在MR/Spark作业中指定OSS数据源文件路径OSS URL: oss:/accessKeyId:accessKeySecretbucket.endpoint/object/path用户在作业中指定输入输出数据源时使用这种URI,可以类比hdfs:/。 用户操作OSS数据时,可以将accessKeyId,accessKeySecret以及endpoint配置到Configuration中,也可以在URI中直接指定accessKeyId,accessKeySecret以及endpoint。具体请参考开发准备一节。EMR S

15、DK的使用问题基于1.0.x版本的sdk打包的作业Jar包在1.1.0版本集群上运行时,可能会出现org.apache.httpcomponents:httpcore包的版本冲突问题。这个是由于OSS依赖的高版本org.apache.httpcomponents:httpcore与Spark的org.apache.httpcomponents:httpcore存 在版本冲突问题。请将sdk的版本升级到1.1.x,重新编译打包。工程的pom文件请参考样例进行修改。基于1.x.0版本的sdk打包的作业Jar包在1.0.0版本集群上运行是,可能会出现Cannotfindosssdk dependen

16、cy, please set fs.oss.sdk.dependency.path first.的报错信息,请更新Hadoop的配置文件,添加以下配置项:fs.oss.sdk.dependency.path/path/to/lib/dependency.jar依赖Jar下载地址Spark SQL 抛 出 Exception in thread main java.sql.SQLException: No suitable driver found for jdbc:mysql:xxx报错低版本mysql-connector-java有可能出现类似问题,更新到最新版本。作业参数中使用-drive

17、r-class-pathossref:/bucket/./mysql-connector-java-version.jar来加载mysql-connector-java包,直接将mysql-connector-java打进作业jar包也会出现上述问题。Spark SQL连RDS出现ConnectionException检查RDS数据库地址是否为内网地址,如不是请在RDS控制台将相应的数据库地址切换成内网地址Spark SQL连RDS出现Invalid authorization specification, message from server: ip not in whitelist检查R

18、DS的白名单设置,将集群机器的内网地址加到RDS的白名单中。Spark程序中使用OSS SDK出现java.lang.NoSuchMethodError:org.apache.http.conn.ssl.S SLConnetionSocketFactory.init(Ljavax/net/ssl/SSLContext; Ljavax/net/ssl/HostnameVerifier)OSS SDK依赖的http-core和http-client包与Spark和Hadoop的运行环境存在版本依赖冲突,不建议在代码中使用OSS SDK,否则需要手动解决依赖冲突问题,比较麻烦。如果有需要对OSS中的

19、文件做一些基础操作例如list等等,可以参照这里的用法进行操作。SSH登陆集群我是否可以登录到集群内部用户如果觉得在网页上的作业和执行计划满足不了更加复杂的应用需求,可以登录到E-MapReduce集群的主机 上去。用户可以找到集群的详情页,其中就有集群master机器的公网IP地址(如果你开启了公网的话),用户 可以直接SSH登录到这台机器上,查看各种设置与状态。JAVA_HOMEHADOOP_HOMEJAVA_HOMEHADOOP_HOMEHADOOP_CONF_DIRHADOOP_LOG_DIRYARN_LOG_DIRHIVE_HOMEHIVE_CONF_DIRPIG_HOMEPIG_C

20、ONF_DIR等。用户在脚本中可以直接引用这些变量。但请不要去修改这些变量的值,以免造成E-MapReduce的意外错误。如何登录到master主机要登录集群的master主机,有一个前提是用户申请的集群需要开通公网ip,如果没有开通公网ip,用户就只能 在E-MapReduce管理页面上使用集群,无法登录到集群master机器。要开通集群的公网ip,需要用户在申请 集群的过程中,点选公网状态以打开,并且设置好您的密码,如果采用随机密码将导致不能登录。申请集群 linkssh HYPERLINK mailto:rootip.of.master rootip.of.masterssh HYPER

21、LINK mailto:rootip.of.master rootip.of.master并输入之前创建时设定的密码。获取集群master机器公网ip的方式请见这里:link如何打通本地机器于集群master机器的ssh无密码登录如果开通了集群master机器的公网ip,用户通常需要经常登录到该机器进行一些管理和操作,甚至开发工作,此时,如果打通于master的ssh无密码登录,会是一件非常方便的事情。要做到这点,可以通过如下步骤:通过上面提到的root+密码的方式登录到master主机无密码登录时希望使用的用户(也可以直接用root,如果 是hadoop用户或者hdfs用户,则无需下面的ss

22、h-keygen的步骤)运行ssh-keygen,一路回车,即可完成本地共有和私有秘钥的生成(如果是hadoop或者hdfs用户,则无需这一步)将您本地机器的/.ssh/id_xxx.pub文件中的内容进行拷贝,并追加到master机器的/.ssh/authorized_keys文件中 以下假设使用的是rsa密钥cat /.ssh/id_rsa.pub /.ssh/authorized_keys chmod 600 /.ssh/authorized_keyscat /.ssh/id_rsa.pub /.ssh/authorized_keys chmod 600 /.ssh/authorized

23、_keysLinux的SSH方式rz /.ssh/id_rsa复制私钥到本地rz /.ssh/id_rsassh -i 私钥存放路径/id_rsa HYPERLINK mailto:hadoop30 ssh -i 私钥存放路径/id_rsa HYPERLINK mailto:hadoop30 hadoop30当然如果你只有这一个私钥,也可以直接放到你的/.ssh/下,默认使用这个私钥,就不需要-i指定了Windows的SSH方式在Windows下你可以有多种方式来使用SSH免密码登录master使用PuTTY首先在这里下载PuTTY在同样的位置下载PuTTYgen打开PuTTYgen,并Loa

24、d你的私钥使用默认的配置,并Saveprivatekey。会保存出一个后缀为ppk的PuTTY使用的密钥文件。运行PuTTY,并在配置页面选择Session输入你的要连接的目标机器公网IP地址,要加上登录使用的用户名,类似hadoopMasterNodeIP在配置页面选择ConnetionSSHAuth选择之前生成好的ppk文件最后点击Open,就会自动登录到master节点了。使用Cygwin | MinGW 这是在Windows上模拟Linux的非常方便的工具。使用起来也非常的简单。如果采用这种方式,那么连接的过程就可以参考上面的Linux的SSH方式了。推荐采用MinGW的方式,这个是最

25、小巧的一种方式。如果官网打不开,可以下载git的客户端。默认带的GitBash就可以满足。无论如何,请妥善保管这个私钥,保证该私钥的安全如何查看Hadoop,Spark,Ganglia等系统的webui由于安全的缘故,E-MapReduce集群的Hadoop,Spark和Ganglia等系统的webui监控系统的端口都没有对 外开放。如果用户想要访问这些webui,需要建立一个SSH隧道,通过端口转发的方式来达到目的。 在进行本步骤前,请确认你已经完成了上面的ssh无密码登录流程有如下2种方式(请注意:下面的操作是在您本地机器上完成的,不是集群内部机器):端口动态转发创建一个SSH隧道,该隧道

26、打通您本地机器跟E-MapReduce集群的master机器的某个动态端口的连接。ssh -i /path/id_xxx -ND 8157 hadoopmasterNodeIPssh -i /path/id_xxx -ND 8157 hadoopmasterNodeIP8157是您本地机器没有被使用过的任何一个端口,用户可以自定定义。完成动态转发以后,可以选择如下2种方式来查看Chrome浏览器(推荐)chrome-proxy-server=socks5:/localhost:8157chrome-proxy-server=socks5:/localhost:8157-host-resolve

27、r-rules=MAP*,EXCLUDElocalhost-user- data-dir=/tmppath/操作系统Chrome位置Mac OS X/Applications/Google Chrome.app/Contents/MacOS/Google ChromeLinux/usr/bin/google-chromeWindowsC:Program Files e这里的tmppath如果是windows可以写类似d:/tmppath,如果是linux或者OSX可以直接写/tmp/ chrome根据不同的系统有不同的位置,参考下表其他浏览器此时,您本地机器跟E-MapReduce集群的mas

28、ter主机的ssh通道已经打通,要在浏览器中查看的webui,您还需要配置一个本地代理。假设您使用的是chrome或者firefox浏览器,请到这里下载FoxyProxy Standard代理软件。安装完成并重启浏览器后,打开一个文本编辑器,编辑如下内容:其中,Port 8157是您本地用来建立于集群master机器ssh连接的端口,这个需要跟您之前执行的在终端中执行的ssh命令中使用的端口匹配120.*这个匹配是用来匹配master主机的ip地址,请根据master的ip地址的情况来定。然后:在浏览器中点击foxyproxy按钮,选择Options选择Import/Export选择刚才您编辑

29、的xml文件,点击Open在ImportFoxyProxySetting对话框中,点击Add点击浏览器中的foxyproxy按钮,选择UseProxyaliyun-emr-socks-proxyforallURLs在浏览器中输入localhost:8088,就可以打开远端的Hadoop界面了。ssh -i /path/id_rsa -N -L 8157:masterNodeIP:8088 hadoopmasterNodeIP本地端口转发ssh -i /path/id_rsa -N -L 8157:masterNodeIP:8088 hadoopmasterNodeIPpath是私钥存放路径ma

30、sterNodeIP是要连接的master节点ip8088是master节点上ResourceManager,一旦要看详细的作业信息,就会出错。更好的解决方案参加下面这个。使用RAM来隔离不同子账号的数据首先在RAM中创建子账号具体流程参考如何在RAM中创建子账号自定义授权策略点击如下位置选择自定义授权策略在其中创建授权策略需要多少套不同的权限控制,就创建多少个策略。这里我们假设我们需要有2套数据控制策略:一个是测试环境, bucketname:test-bucket 一个是生产环境, bucketname:prod-bucketVersion: 1, Statement: Version:

31、1, Statement: Effect: Allow, Action: oss:ListBuckets,Effect: Allow, Action: oss:ListBuckets,Resource: acs:oss:*:*:*,Effect: Allow, Action: oss:Listobjects, oss:GetObject, oss:PutObject, oss:DeleteObject,Resource: acs:oss:*:*:test-bucket, acs:oss:*:*:test-bucket/*Version: 1, Statement: Version: 1, St

32、atement: Effect: Allow, Action: oss:ListBuckets,Resource: acs:oss:*:*:*,Effect: Allow, Action: oss:Listobjects, oss:GetObject, oss:PutObject,Resource: acs:oss:*:*:prod-bucket, acs:oss:*:*:prod-bucket/*将策略赋给子账号点击子账号,进入详情页面,选择用户授权策略。点击右上角的编辑授权策略选择之前创建的策略,添加后保存。打开子账号的控制台登录点击子账号进入详情,在这里打开子账号的控制台登录完成并使用完

33、成以上的所有步骤以后,使用对应的子账号登录E-MapReduce,会有以下的限制在创建集群,创建作业,和创建执行计划的OSS选择界面,可以看到所有的bucket,但是只能进入被 授权的bucket只能看到被授权的bucket下的内容,无法看到其他bucket内的内容作业中只能读写被授权的bucket,读写未被授权的bucket会报错附录系统错误码常见错误码错误码说明4001请求参数不符合要求,如参数缺少,参数格式不满足要求4005没有权限访问其他用户的资源4006该集群处于异常状态,不能提交job,请您检查执行计划关联的集群是否已经释放4007安全组名称不能为空4009请检查您的账户是否欠费或

34、者被冻结4011该集群处于异常状态,不能恢复调度,请您检查执行计划关联的集群是否已经释放5012用户创建的安全组数量超过上限,您可以前往安全组页面删除一些无用的安全组5038作业在运行或待运行的执行计划中,暂不能修改,需等待相关联的执行计划运行完成才能修改,您可以克隆一个新的作业进行修改使用5039集群角色锁定失败,E-MapReduce的运行需要一些权限,关于EMR的角色说明,请前往进行创建5050访问数据库错误,请稍后重试6002更新集群状态失败8002没有操作的权限,请使用RAM授权8003没有PassRole操作的权限,请使用RAM授权9006集群ID不存在,请确认9007创建集群时设

35、置master节点的登陆密码,必须包含大小写字母以及数字,长度为830ECS相关错误错误码说明指定的 InstanceType 未授权使用创建集群使用的机型尚未申请。请在ECS的购买页面提交申请开通高配。zone 或者 Cluster 的库存不够了ECS在该区域的库存不足状态表集群状态表备注:在集群列表和集群详情页面会查看到集群状态状态名状态代码状态说明创建中CREATING集群正在构建,包括两个阶段:一是物理ECS机器的创建,二是Spark集群的启动,稍等片刻即可达到运行中状态创建失败CREATE_FAILED创建过程中遇到异常,已经创建的ECS机器会自动回滚,在集群列表页面点击状态右边的问号,可查看异常明细运行中RUNNING计算集群处于正常运行状态空闲IDLE集群目前没有运行执行计划释放中RELEASING点击集群状态列表的释放按钮可达到此状态,此状态

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论