hadoop使用哪种排序算法的安装方法有哪几种

所有hadoop 的jar都是利用java8的运行时版本进行编译的。依然在使用java7或者更低版本的用户必须升级到Java8.
与副本相比纠删码是一种更节省空间的数据持久化存储方法。标准编码(比如Reed-Solomon(10,4))会有1.4 倍的空间开销;然而HDFS副本则会有3倍的空间开销。因为纠删码额外开销主要是在重建和执行远程读,它传统用于存储冷数据,即不经常访问的数据。当部署这个新特性时用户应该考虑纠删码的网络和CPU 开销。
最初的HDFS NameNode high-availability实现仅仅提供了一个active NameNode和一个Standby NameNode;并且通过将编辑日志复制到三个JournalNodes上,这种架构能够容忍系统中的任何一个节点的失败。然而,一些部署需要更高的容错度。我们可以通过这个新特性来实现,其允许用户运行多个Standby NameNode。比如通过配置三个NameNode和五个JournalNodes,这个系统可以容忍2个节点的故障,而不是仅仅一个节点。HDFS high-availability文档已经对这些信息进行了更新,我们可以阅读这篇文档了解如何配置多于2个NameNodes。,
5,多个服务的默认端口被改变
在此之前,多个Hadoop服务的默认端口都属于Linux的临时端口范围()。这就意味着我们的服务在启动的时候可能因为和其他应用程序产生端口冲突而无法启动。现在这些可能会产生冲突的端口已经不再属于临时端口的范围,这些端口的改变会影响NameNode, Secondary NameNode,


如果看到了标注的字说明格式化成功了

测试。命令基本和Hadoop2一样的

 

hadoop3.x与hadoop2.x在配置方面基本变化不是很大。hadoop3.0在使用过程中,有些不配置,可能会产生问题。这里贴出hadoop3.0配置,供大家参考。对于基本的准备工作省略。如不会可参考:


hadoop(2.x)以hadoop2.2为例完全分布式最新高可靠安装文档

这里主要贴出配置文件及相关配置说明:

[XML] 纯文本查看 复制代码

hadoop3.0端口发生了变化,在伪分布中hadoop依然是用的是9000端口,我们这里使用官网更改的端口9820端口变化参考:

[XML] 纯文本查看 复制代码

[XML] 纯文本查看 复制代码

当此值为空时,设置执行环境的命令将取决于操作系统:

[XML] 纯文本查看 复制代码

本 Hadoop 教程由出品,转载请注明。本教程适合于在 CentOS .UnknowHostException”,这需要执行如下命令修改 hosts 文件,为你的主机名增加IP映射:

主机名在终端窗口标题里可以看到,或执行命令 hostname 查看,如下图所示,在最后面增加一行 “127.0.0.1 dblab”:

保存文件后,重新运行 hadoop 实例,若执行成功的话会输出很多作业的相关信息,最后的输出信息如下图所示。作业的结果会输出在指定的 output 文件夹中,通过命令 cat ./output/* 查看结果,符合正则的单词 dfsadmin 出现了1次:

注意,Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 ./output 删除。

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

在设置 Hadoop 伪分布式配置前,我们还需要设置 HADOOP 环境变量,执行如下命令在 ~/.bashrc 中设置:

这次我们选择用 gedit 而不是 vim 来编辑。gedit 是文本编辑器,类似于 Windows 中的记事本,会比较方便。保存后记得关掉整个 gedit 程序,否则会占用终端。在文件最后面增加如下内容:

保存后,不要忘记执行如下命令使配置生效:

这些变量在启动 Hadoop 进程时需要用到,不设置的话可能会报错(这些变量也可以通过修改 ./etc/hadoop/hadoop-env.sh 实现)。

配置完成后,执行 NameNode 的格式化:

DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。

通过查看启动日志分析启动失败原因

有时 Hadoop 无法正确启动,如 NameNode 进程没有顺利启动,这时可以查看启动日志来排查原因,注意几点:

  • 每一次的启动日志都是追加在日志文件之后,所以得拉到最后面看,看下记录的时间就知道了。
  • 可以在网上搜索一下出错信息,看能否找到一些相关的解决方法。

运行Hadoop伪分布式实例

上面的单机模式,grep 例子读取的是本地数据,伪分布式读取的则是 HDFS 上的数据。要使用 HDFS,首先需要在 HDFS 中创建用户目录:

复制完成后,可以通过如下命令查看 HDFS 中的文件列表:

伪分布式运行 MapReduce 作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件(可以将单机步骤中创建的本地 input 文件夹,输出结果 output 文件夹都删掉来验证这一点)。

查看运行结果的命令(查看的是位于 HDFS 中的输出结果):

结果如下,注意到刚才我们已经更改了配置文件,所以运行结果不同。

我们也可以将运行结果取回到本地:

运行程序时,输出目录不能存在

运行 Hadoop 程序时,为了防止覆盖结果,程序指定的输出目录(如 output)不能存在,否则会提示错误,因此运行前需要先删除输出目录。在实际开发应用程序时,可考虑在程序中加上如下代码,能在每次运行时自动删除输出目录,避免繁琐的命令行操作:

若要关闭 Hadoop,则运行

(伪分布式不启动 YARN 也可以,一般不会影响程序执行)

YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性,YARN 的更多介绍在此不展开,有兴趣的可查阅相关资料。

首先修改配置文件 mapred-site.xml,这边需要先进行重命名:

启动 YARN 之后,运行实例的方法还是一样的,仅仅是资源管理方式、任务调度不同。观察日志信息可以发现,不启用 YARN 时,是 “mapred.LocalJobRunner” 在跑任务,启用 YARN 之后,是 “mapred.YARNRunner” 在跑任务。启动 YARN 有个好处是可以通过 Web 界面查看任务的运行情况:,如下图所示。

开启YARN后可以查看任务运行信息

但 YARN 主要是为集群提供更好的资源管理与任务调度,然而这在单机上体现不出价值,反而会使程序跑得稍慢些。因此在单机上是否开启 YARN 就看实际情况了。

同样的,关闭 YARN 的脚本如下:

自此,你已经掌握 Hadoop 的配置和基本使用了。

附加教程: 配置PATH环境变量

在这里额外讲一下 PATH 这个环境变量(可执行 echo $PATH 查看,当中包含了多个目录)。例如我们在主文件夹 ~ 中执行 ls 这个命令时,实际执行的是 /bin/ls 这个程序,而不是 ~/ls 这个程序。系统是根据 PATH 这个环境变量中包含的目录位置,逐一进行查找,直至在这些目录位置下找到匹配的程序(若没有匹配的则提示该命令不存在)。

开启 Hadoop,也可以直接通过 hdfs 访问 HDFS 的内容,方便平时的操作。

在平时的学习中,我们使用伪分布式就足够了。如果需要安装 Hadoop 集群,请查看。

  • : 用文本编辑器写 Java 程序是不靠谱的,还是用 Eclipse 比较方便。
  • : 有时候需要直接通过命令来编译 MapReduce 程序。

我要回帖

更多关于 hadoop使用哪种排序算法 的文章

 

随机推荐