hadoop运行子程序失败pi

hadoop运行子程序失败pi,第1张

您好,对于Hadoop运行子程序失败的问题,其中一个可能的原因是Pig编译器本身存在问题或者没有正确安装。

在以下任何一种情况下,Hadoop运行子程序失败时,建议您先检查Pig编译器的版本和安装是否正确。以下是具体步骤:

1 确认Pig编译器已正确安装并设置环境变量为全局变量。

2 确认您正在使用支持您正在运行的Hadoop版本的Pig编译器,可以通过以下命令查看此信息:

```

pig --version

```

3 如果使用的是旧版本的Pig编译器,请尝试更新为最新版本,确保它与当前正在使用的Hadoop版本兼容。

4 确认Hadoop集群的每个节点上都安装了Pig编译器。

如果以上步骤无法解决问题,您可以通过查看Pig日志文件来获取更多信息。常见的问题包括输入/输出格式错误、权限问题、网络故障等。

希望这些信息对您有所帮助,如果您需要更具体的建议,请告诉我您的具体问题和环境。

一、HDFS缺点:

1、不能做到低延迟:由于hadoop针对高数据吞吐量做了优化,牺牲了获取数据的延迟,所以对于低延迟数据访问,不适合hadoop,对于低延迟的访问需求,HBase是更好的选择,

2、不适合大量的小文件存储:由于namenode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于namenode的内存容量,根据经验,每个文件、目录和数据块的存储信息大约占150字节。

3、不适合多用户写入文件,修改文件:Hadoop20虽然支持文件的追加功能,但是还是不建议对HDFS上的 文件进行修改,因为效率低。

4、对于上传到HDFS上的文件,不支持修改文件,HDFS适合一次写入,多次读取的场景。

5、HDFS不支持多用户同时执行写 *** 作,即同一时间,只能有一个用户执行写 *** 作。

二、HDFS优点:

1、高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。

2、高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

3、高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

4、高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

5、低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。

6、Hadoop带有用Java语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。

一、 Hadoop 特点

1、支持超大文件:一般来说,HDFS存储的文件可以支持TB和PB级别的数据。

2、检测和快速应对硬件故障:在集群环境中,硬件故障是常见性问题。因为有上千台服务器连在一起,故障率高,因此故障检测和自动恢复hdfs文件系统的一个设计目标。

3、流式数据访问:HDFS的数据处理规模比较大,应用一次需要大量的数据,同时这些应用一般都是批量处理,而不是用户交互式处理,应用程序能以流的形式访问数据库。

4、简化的一致性模型:对于外部使用用户,不需要了解hadoop底层细节,比如文件的切块,文件的存储,节点的管理。

5、高容错性:数据自动保存多个副本,副本丢失后自动恢复。可构建在廉价机上,实现线性(横向)扩展,当集群增加新节点之后,namenode也可以感知,将数据分发和备份到相应的节点上。

6、商用硬件:Hadoop并不需要运行在昂贵且高可靠的硬件上,它是设计运行在商用硬件的集群上的,因此至少对于庞大的集群来说,节点故障的几率还是非常高的。HDFS遇到上述故障时,被设计成能够继续运行且不让用户察觉到明显的中断。

生产集群不会每台都有访问外网的权限,一般管理员会有master的外网访问权限,为了保证hadoop或spark程序的正确运行,保证节点间的时间同步是很有必要的,因此需要设置局域网内次节点与master时间同步。

1) 一般系统安装时的时区都会选择上海,如果需要重新选择时区,那么在master下敲入tzselect进行时区选择。

2) Linux一般都是安装了ntp的,如果没有安装可以用yum install ntp来安装一下(这个安装应该直接在系统的yum库中可以找到,因此不需要网络的),每台节点都需要确保其安装。

3) chkconfig ntpd on命令设置ntp永久开启

4) 接下来在master上需要进行配置文件的修改。

首先停掉ntpd服务: service ntpd stop

vim /etc/ntpconf

将文件修改如下:

1> restrict 1921681300 mask 2552552550 nomodify notrap 此处修改的意思为处于192168130网段的全部ip都可以与master来设置时间同步。

2> 对于新加的几个server,其目的如下注释:

server 2107214544 perfer #国家时间校准中心

server 2021121036 #校准备用服务器

server 5912419683 #校准备用服务器

server 19216813056 #局域网NTP服务器IP,也就是主节点

配置好后,master中root下启动ntpd: service ntpd start

设置每天同步一次: crontab –l

5) 次节点同步

次节点先停掉ntpd服务,然后输入: ntpdate master_host_name ,然后启动ntpd,此时输入 date 命令,看看时间是否正常了,同时可以通过设置 crontab –l 来使其每天都同步一次。全部的节点都这么同步一下。

我的博客 : >

基于Hadoop进行开发时,有时候会被Hadoop的运行模式弄得晕头转向,傻傻分不清各种运行模式的区别,给日常开发带来很多困惑,不同集群配置文件也各不相不同。弄明白Hadoop的运行模式和对配置文件的作用要做到心中明了,在工作中才能得手顺心。

hadoop的配置文件均以XML文件进行配置,它有四个最常见的配置文件,分别为:

core-sitexml文件主要用于配置通用属性。

hdfs-sitexml文件用于配置Hdfs的属性。

mapred-sitexml文件用于配置Mapreduce的属性。

yarn-sitexml文件用于配置Yarn的属性。

一般来说,这四种配置文件都存储在hadoop默认的安装目录etc/hadoop子目录中。 不过我们也可以在搭建集群时根据实际需求,把etc/hadoop目录和其下的文件复制到另外一个位置。这样可以把配置文件和安装文件分离开来,方便管理。

注意:如果把etc/hadoop目录和其下的文件复制到另外一个位置。

我们需要在环境变量中将hadoop_conf_dir设置成指向新目录。

1、本地运行模式

无需任何守护进程 ,所有的程序都运行在同一个JVM上执行。在本地模式下调试MR程序非常高效方便,一般该模式主要是在学习或者开发阶段调试使用 。

2、伪分布式模式

Hadoop守护进程运行在本地机器上 ,模拟一个小规模的集群,换句话说,可以配置一台机器的Hadoop集群,伪分布式是完全分布式的一个特例。

3、完全分布式模式

Hadoop守护进程运行在一个集群上 。这种运行模式也就是我们常见的各种云,主要用于大规模的生产环境中。

注意:分布式要启动守护进程 ,是指在使用分布式hadoop时,要先启动一些准备程序进程,然后才能使用。 比如start-dfssh start-yarnsh,而本地模式不需要启动这些守护进程。

注意:在本地模式下,将使用本地文件系统和本地MapReduce运行器。在分布式模式下,将启动HDFS和YARN守护进程。

Hadoop是由Apache开源软件基金会开发的,运行于大规模普通服务器上的分布式系统基础架构,用于大规模数据的存储、计算、分析等。通过使用Hadoop平台用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。2007年雅虎发布了第一个Apache Hadoop版本0141;2008年雅虎用Hadoop做到全网尺度的搜索;2009年雅虎把内部版本全部开源,于是IBM也加入Hadoop的开发阵营;2010年Facebook宣布正式运行世界最大的Hadoop集群;2011年Apache Hadoop10版本发布;2012年Apache Hadoop20版本发布。下面具体介绍一下Hadoop系统的架构。

Hadoop由许多元素构成,如下图图所示,包括HBase、Hive、Pig、Chukwa、Oozie和ZooKeeper等,但是其核心组件为HDFS和MapReduce。

HDFS是Hadoop Distributed File System系统的缩写,是一个使用JAVA语言实现的、分布式的、可扩展的文件系统,它存储 Hadoop 集群中所有存储节点上的文件,由NameNode和DataNode两部分组成。HDFS的上一层是 MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成,用来对存储在HDFS上的数据进行计算分析。下面来具体介绍HDFS和MapReduce的工作原理及应用。

HDFS

HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode是集群中的数据节点,用来存储实际的数据,并负责管理它所在节点上的数据存储。HDFS公开了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间 *** 作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制,下面就具体来阐述HDFS系统中涉及的基本概念;

数据块(Block) HDFS和传统的分布式文件系统一样,也采用了数据块的概念,将数据分割成固定大小的数据块进行存储,默认大小为64MB,块的大小可针对每个文件配置,由客户端任意指定,并且每个块都有属于自己的全局ID,作为一个独立的单位存储在集群服务器上。与传统分布式文件系统不同的是,如果实际数据没有达到块大小时,则并不实际占用磁盘空间。HDFS元数据 HDFS元数据由文件系统目录树信息、文件和数据块的对应关系和块的存放位置三个部分组成,文件系统目录树信息包括文件名、目录名及文件和目录的从属关系,文件和目录的大小,创建及最后访问时间。文件和块的对应关系记录了文件由哪些块组成。此外元数据还记录了块的存放位置,包括存放块的机器名和块ID。NameNode HDFS对元数据和实际数据采取分别存储的方式,元数据存储在一台指定的服务器上,称为NameNode,实际数据则存储在集群中的其他机器上的文件系统中,称为DataNode。NameNode是用来管理文件系统命名空间的组件,并且一个HDFS集群只有一台NameNode,由于元数据存储在NameNode上,当NameNode出现故障时将导致整个集群无法工作。元数据保存在NameNode的内存当中,以便快速查询,1G内存大致可以存放1000000个块对应的元数据信息。DataNode DataNode用来存储块的实际数据,每个块会在本地文件系统产生两个文件,一个是实际的数据文件,另一个是块的附加信息文件,其中包括数据的校验和生成时间等信息。DataNode通过心跳包(Heartbeat)与NameNode通信,当客户端读取/写入数据的时候将直接与DataNode进行通信。Secondary NameNode Secondary NameNode在Hadoop集群中起到至关重要的作用,首先需要明确它并不是NameNode的备份节点,它和NameNode运行在不同的主机上,它主要的工作是阶段性地合并NameNode的日志文件,控制NameNode日志文件的大小。此外,在NameNode硬盘损坏的情况下,Secondary NameNode也可用作数据恢复,但恢复的只是部分数据。

HDFS架构及工作原理

下图为HDFS对数据存储的原理图,NameNode存储了DataNode节点所存储数据的元数据,即Hdfs和MapReduce两个文件的分块信息,假设单个文件的存储份数为3,即每个数据块有三份备份,那么数据在DataNode上的存储的原则为:相同的两个数据块存储在同一机架的不同的DataNode节点上;第三个数据块存储在不同机架上的DataNode节点上。这样就解决了当某个DataNode节点出现故障的时候数据丢失的问题,保障了存储在HDFS系统上数据的可用性。

Hadoop MapReduce

MapReduce是Google公司的核心计算模型,它将运行于大规模集群上的复杂的并行计算过程高度地抽象为两个函数:Map和Reduce。MapReduce也可以看成是一种解决问题的方法,它把一个复杂的任务分解成多个任务,Map负责把任务分解成多个任务,Reduce负责把分解后多任务处理的结果汇总起来。

Hadoop中的MapReduce是一个简易的软件框架,基于它写出来的应用程序能够运行在由上千台机器组成的大型集群上,并以一种可靠容错的方式并行处理TB级别的数据集,实现了Hadoop在集群上的数据和任务的并行计算与处理。在并行计算中其他的种种复杂的问题,如分布式存储、工作调度、负载均衡、容错处理、网络通信等均由MapReduce框架负责处理,编程人员可以不用关心。用MapReduce来处理的数据集必须具备这样的特点:待处理的数据集可以分解成许多小的数据集,并且每个小的数据集都可以完全并行地进行处理。

Hadoop MapReduce实现

Hadoop MapReduce是基于HDFS的MapReduce编程框架实现的,我们把MapReduce处理的问题称为作业 (Job),并将作业分解为任务 (Task),在MapReduce执行过程中需要有两种任务。

Map 把输入的键/值对转换成一组中间结果的键/值对Reduce 把Map任务产生的一组具有相同键的中间结果根据逻辑转换生成较小的最终结果。

Hadoop MapReduce的服务进程

Hadoop MapReduce有两个主要的服务进程,一个是单独运行在主节点上的JobTracker进程,另一个是运行在每个集群从节点上的TaskTracker进程。服务进程部署如下图所示。

JobTraker和NameNode运行在同一个服务器上,我们称为Hadoop集群的主节点,负责接收客户端提交的作业,并将任务分配到不同的计算节点TaskTracker上,同时监控作业的运行情况,完成作业的更新和容错处理;Tasktracker通常和DataNode装在一起,称为Hadoop集群的从节点,它调用Map和Reduce执行JobTracker指派的任务,并发送心跳消息给JobTracker,向JobTracker汇报可运行任务的数量。

Hadoop安全机制

Hadoop 一直缺乏安全机制,主要表现在以下几个方面。

User to Service:NameNode或者JobTracker缺乏安全认证机制;DataNode缺乏安全授权机制;JobTracker缺乏安全授权机制。Service to Service安全认证:Datanode与TaskTracker缺乏安全授权机制,这使得用户可以随意启动假的DataNode和TaskTracker。磁盘或者通信连接没有经过加密。

为了增强Hadoop的安全机制, 从2009年起Apache专门抽出一个团队为Hadoop增加安全认证和授权机制,Apache Hadoop 100版本之后的版本添加了安全机制,但是升级到该版本后可能会导致Hadoop的一些应用不可用。

首先Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop 的最常见用法之一是 Web 搜索。虽然它不是唯一的软件框架应用程序,但作为一个并行数据处理引擎,它的表现非常突出。Hadoop 最有趣的方面之一是 Map and Reduce 流程,它受到Google开发的启发。这个流程称为创建索引,它将 Web爬行器检索到的文本 Web 页面作为输入,并且将这些页面上的单词的频率报告作为结果。

结果是对输入域中的单词进行计数,这无疑对处理索引十分有用。但是,假设有两个输入域,第一个是 one small step for man,第二个是 one giant leap for mankind。您可以在每个域上执行 Map 函数和 Reduce 函数,然后将这两个键/值对列表应用到另一个 Reduce 函数,这时得到与前面一样的结果。换句话说,可以在输入域并行使用相同的 *** 作,得到的结果是一样的,但速度更快。这便是 MapReduce 的威力;它的并行功能可在任意数量的系统上使用

回到 Hadoop 上,它实现这个功能的方法是:一个代表客户机在单个主系统上启动的 MapReduce应用程序称为 JobTracker。类似于 NameNode,它是 Hadoop 集群中唯一负责控制 MapReduce应用程序的系统。在应用程序提交之后,将提供包含在 HDFS 中的输入和输出目录。JobTracker 使用文件块信息(物理量和位置)确定如何创建其他 TaskTracker 从属任务。MapReduce应用程序被复制到每个出现输入文件块的节点。将为特定节点上的每个文件块创建一个唯一的从属任务。每个 TaskTracker 将状态和完成信息报告给 JobTracker

通过Hadoop安全部署经验总结,开发出以下十大建议,以确保大型和复杂多样环境下的数据信息安全 [9] 。

1、先下手为强!在规划部署阶段就确定数据的隐私保护策略,最好是在将数据放入到Hadoop之前就确定好保护策略 [9] 。

2、确定哪些数据属于企业的敏感数据。根据公司的隐私保护政策,以及相关的行业法规和政府规章来综合确定 [9] 。

3、及时发现敏感数据是否暴露在外,或者是否导入到Hadoop中 [9] 。

4、搜集信息并决定是否暴露出安全风险 [9] 。

5、确定商业分析是否需要访问真实数据,或者确定是否可以使用这些敏感数据。然后,选择合适的加密技术。如果有任何疑问,对其进行加密隐藏处理,同时提供最安全的加密技术和灵活的应对策略,以适应未来需求的发展 [9] 。

6、确保数据保护方案同时采用了隐藏和加密技术,尤其是如果我们需要将敏感数据在Hadoop中保持独立的话 [9] 。

7、确保数据保护方案适用于所有的数据文件,以保存在数据汇总中实现数据分析的准确性 [9] 。

8、确定是否需要为特定的数据集量身定制保护方案,并考虑将Hadoop的目录分成较小的更为安全的组 [9] 。

9、确保选择的加密解决方案可与公司的访问控制技术互 *** 作,允许不同用户可以有选择性地访问Hadoop集群中的数据 [9] 。

10、确保需要加密的时候有合适的技术(比如Java、Pig等)可被部署并支持无缝解密和快速访问数据

可以。根据查询Python数据的内容得知:hadoop可以使用chgroup命令,是用来改变文件所属的组,chgroup后边加-R将使改变在目录结构下递归进行。Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。

1、选择开始菜单中→程序→ManagementSQLServer2008→SQLServerManagementStudio命令,打开SQLServerManagementStudio窗口,并使用Windows或SQLServer身份验证建立连接。

2、在对象资源管理器窗口中展开服务器,然后选择数据库节点

3、右键单击数据库节点,从d出来的快捷菜单中选择新建数据库命令。

4、执行上述 *** 作后,会d出新建数据库对话框。在对话框、左侧有3个选项,分别是常规、选项和文件组。完成这三个选项中的设置会后,就完成了数据库的创建工作,5、在数据库名称文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。

6、在所有者文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用使用全文索引复选框。

7、在数据库文件列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的添加、删除按钮添加或删除数据库文件。

8、切换到选项页、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。

9、切换到文件组页,在这里可以添加或删除文件组。

完成以上 *** 作后,单击确定按钮关闭新建数据库对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再对象资源管理器窗口看到。

以上就是关于hadoop运行子程序失败pi全部的内容,包括:hadoop运行子程序失败pi、hadoop有哪些优缺点、Hadoop/Spark集群时间同步问题解决方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10123687.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)