Ubuntu 16.04——Hadoop集群安装配置

这篇具有很好参考价值的文章主要介绍了Ubuntu 16.04——Hadoop集群安装配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Hadoop集群安装配置

hadoop 集群安装配置分为两个部分,一个部分是 主节点(Master)从节点(Slave),两个部分需要完成的配置有一定的不同;总的来说,Master 所需要做的会比 Slave 会多一些。下面会演示两个部分需要做的事情;由于各台主机情况会有所不同,所以在报错的时候也会有一些的不一样,所以该文章仅供参考。

环境

主机版本:Windows11

虚拟机版本:ubuntukylin-16.04-desktop-amd64

VMware 版本: VMware® Workstation 17 Pro

网卡:桥接模式

jdk 版本:jdk-8u162-linux-x64

hadoop 版本:hadoop-3.1.3

注:硬件版本是使用的兼容 VMware 12.X 的。

看下文之前,默认是已经配置好 IP 地址可以上网,因为大家使用的网络适配器可能会有所不同,所以可能会出现一些对 NAT 网络使用者不友好的情况,再次提醒各位,该篇文章仅供参考。

节点配置

我们需要对 Master 节点和 Slave 节点都进行配置,因为很多东西都是可以直接有 Master 来做的,所以呢,我们就先让 Master 把能做的都做了先,然后尽量让 Slave 能轻松一些。中心思想就是一个 Master 配置完之后直接使用传输命令将配置好的软件直接打包发送到 Slave 上,所以相对来说 Master 会做的更多一些,但是也会节省资源。

配置前提

因为考虑到很多人可能是做伪分布的,所以会出现多多少少的问题,所以这里还是在给大家看一些简单的前提。

修改主机名

在修改主机名称之前,我们需要先查看另外一个文件的内容,因为这个会对我们修改后有一定的影响。

我们首先是需要先打开 /etc/hosts 查看内容,一般hosts文件中只能有一个127.0.0.1,其对应主机名为localhost,如果有多余127.0.0.1映射,应删除,特别是不能存在“127.0.1.1 [主机名]”这样的映射记录。修改后需要重启Linux系统。

sudo vim /etc/hosts

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

打开后我们可以看到这里会有被红色框框圈起来的地方,如果没有可以不用管,如果有,请把它注释掉或者直接删除。我这里选择的就是把它注释掉。注释之后效果就是如下图这样子了。

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

既然需要大家把它注释掉肯定是因为它有一些别的作用,最主要的作用就是为了避免我们使用命令的时候发生报错或者其他一些 warning,比如像下图,无法解析主机的错误,因为我们修改主机名称之后,他们之间的映射关系变了,但是之前的映射关系并没有被覆盖或者删除,所以系统无法对修改后的主机名进行映射,最终产生这样的错误。

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

sudo vim /etc/hostname

执行上面命令后,就打开了“/etc/hostname”这个文件,这个文件里面记录了主机名,比如,假设安装Ubuntu系统时,设置的主机名是“hadoop01”,因此,打开这个文件以后,里面就只有“hadoop01”这一行内容,可以直接删除,并修改为“Master”(注意是区分大小写的),然后,保存退出vim编辑器,这样就完成了主机名的修改,需要重启Linux系统才能看到主机名的变化。

Master

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

要注意观察主机名修改前后的变化。在修改主机名之前,如果用hadoop登录Linux系统,打开终端,进入Shell命令提示符状态,会显示如下内容:

hadoop@hadoop01:~$

修改主机名并且重启系统之后,用hadoop登录Linux系统,打开终端,进入Shell命令提示符状态,会显示如下内容:

hadoop@Master:~$

可以看出,这时就很容易辨认出当前是处于Master节点上进行操作,不会和Slave节点产生混淆。

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

然后,在Master节点中执行如下命令打开并修改Master节点中的“/etc/hosts”文件:

sudo vim /etc/hosts

打开文件后,我们在文件的最后新增内容,假设我们现在使用的是三台主机进行连接,那么就有两台是 Slave 节点,格式如下:

[Master的IP] Master
[Slave1的IP] Slave1
[Slave2的IP] Slave2

配置完成后,效果类似下图,但因为我是有四台主机,所以我有三个 SLave 节点,至于有一行 Master 被注释了,则是因为需要用桥接网络,而且虚拟机会在机房电脑和我的笔记本上辗转,所以就会有两个不一样的,但因为注释了,所以只有第一个是生效的。

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

修改完成以后,请重新启动各节点的Linux系统。这样就完成了 Master 节点和 Slave 节点的配置,然后,需要在各个节点上都执行如下命令,测试是否相互ping得通,如果ping不通,后面就无法顺利配置成功:

ping Master -c 3   # 只ping 3次就会停止,否则要按Ctrl+c中断ping命令
ping Slave1 -c 3

这里只演示了两个,请大家根据自己的实际情况(有多少台主机)进行修改,需要相互都可以 ping 通才算是可以连接上,关于各个主机之间的免密登陆,这里就不过多进行赘述,就默认都已经可以免密登陆了。

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

Master 配置

在 Master 上是需要配置环境变量,然后是对 Hadoop 进行配置,配置文件总共有六个,分别为 workerscore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml,具体的在下面会给大家进行解释,一点拙见,若有不对,可以在评论区指出。

配置PATH变量

如果还没有配置PATH变量,那么需要在Master节点上进行配置。 首先执行命令“vim ~/.bashrc”,也就是使用vim编辑器打开“ bashrc ”文件

sudo vim ~/.bashrc

然后,在该文件最上面的位置加入下面一行内容:

export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin

配置完 jdk 和 hadoop 的环境变量之后,~/.bashrc 文件中就会有这么几行内容,路径随安装的路径会有所不同。

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

保存后执行命令“source ~/.bashrc”,使配置生效。

source ~/.bashrc
配置集群/分布式环境

在配置集群/分布式模式时,需要修改“/usr/local/hadoop/etc/hadoop”目录下的配置文件,这里仅设置正常启动所必须的设置项,包括workers 、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml共5个文件,更多设置项可查看官方说明。接下来我们配置文件都会默认在 Hadoop 的安装目录下面。

cd /usr/local/hadoop/etc/hadoop # 进入文件所在目录文件夹
修改配置文件
(1)修改 workers 文件

需要把所有数据节点的主机名写入该文件,每行一个,默认为 localhost(即把本机作为数据节点),所以,在伪分布式配置时,就采用了这种默认的配置,使得节点既作为名称节点也作为数据节点。在进行分布式配置时,可以保留 localhost,让 Master 节点同时充当名称节点和数据节点,或者也可以删掉localhost这行,让 Master 节点仅作为名称节点使用。

vim workers 

Master节点仅作为名称节点使用,因此将 workers 文件中原来的 localhost 删除,添加如下内容:

Slave1
Slave2
Slave3

因为我是四台主机连在一起,然后我的选择是 Master 作为 Namenode,其余 Slave 节点作为 Datanode,所以文件中我需要填写三个节点的主机名称。具体效果如下图:

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

(2)修改配置文件 core-site.xml

Hadoop 的配置文件是 xml 格式,每个配置以声明 <property><name><value> 的方式来实现。通过 gedit 编辑会比较方便

gedit ./etc/hadoop/core-site.xml

请把 core-site.xml 文件修改为如下内容:

  1. fs.defaultFS,值的格式是: file:///文件:///,这是默认文件系统的名称。 一个URI,其方案和权限决定了文件系统的实现。 该 uri 的方案确定配置属性(fs.SCHEME.impl)命名 FileSystem 实现类。 uri 的权限用于 确定文件系统的主机、端口等。
  2. hadoop.tmp.dir,值的格式是:/tmp/hadoop-${user.name},是其他临时目录的基目录。
<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Master:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:///usr/local/hadoop/tmp</value>
                <description>A base for other temporary directories.</description>
        </property>
</configuration>

修改前:

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据
修改后:

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

放出修改前后图是为了让大家能对比清楚需要修改的地方,以免大家改了不该改的。

(3)修改文件

对于 Hadoop 的分布式文件系统 HDFS 而言,一般都是采用冗余存储,冗余因子通常为3,也就是说,一份数据保存三份副本。如果只使用了一个Slave节点作为数据节点,即集群中只有一个数据节点,数据只能保存一份,所以 ,dfs.replication 的值还是设置为 1。所以在修改的时候需要根据节点数量来决定。

vim hdfs-site.xml

修改的 hdfs-site.xml 具体内容如下:

  1. dfs.namenode.secondary.http-address,值的格式是:0.0.0.0:9868,辅助名称节点 http 服务器地址和端口。
  2. dfs.replication,因为我有三个 Datanode,所以这里我的值设置为3,默认数据块复制。 创建文件时可以指定实际的复制次数。 如果在创建时未指定复制,则使用默认值。
  3. dfs.namenode.name.dir,值的格式是: file://${hadoop.tmp.dir}/dfs/name,确定 DFS 名称节点在本地文件系统上的位置 应该存储名称表(fsimage)。 如果这是一个逗号分隔的列表 的目录中,则名称表将复制到所有目录,用于冗余。
  4. dfs.datanode.data.dir,值的格式为: file://${hadoop.tmp.dir}/dfs/data,确定DFS数据节点在本地文件系统上的位置 应该存储其块。 如果这是逗号分隔的 目录列表,则数据将存储在所有命名的 目录,通常位于不同的设备上。应标记目录 具有 HDFS 的相应存储类型([SSD]/[DISK]/[ARCHIVE]/[RAM_DISK]) 存储策略。如果目录是磁盘,则默认存储类型为DISK 没有明确标记的存储类型。不存在的目录将 如果本地文件系统权限允许,则创建。
<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:///usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:///usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

修改前:

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

修改后:

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

(4)修改文件 mapred-site.xml

/usr/local/hadoop/etc/hadoop目录下有一个mapred-site.xml.template,需要修改文件名称,把它重命名为 mapred-site.xml,当然,也可能没有,我这里是没有,不知道大家有没有,就先记录下来。

vim mapred-site.xml

mapred-site.xml 文件配置成如下内容:

  1. mapreduce.framework.name,值根据具体情况进行调整,用于执行 MapReduce 作业的运行时框架。值可以是 localclassic 的或 yarn 之一。
  2. mapreduce.jobhistory.address,值的格式为: 0.0.0.0:10020,**MapReduce JobHistory Server IPC(进程间通信)**主机和端口是标识可以在网络上访问 MapReduce JobHistory Server 的详细信息。IPC主机通常是运行 JobHistory Server 的计算机的 IP 地址或主机名。端口号是网络用于将通信量定向到正确进程的唯一标识符。这些值是客户端(如Hadoop Web UI)访问 JobHistory Server 和查看有关已完成 MapReduce 作业的详细信息所必需的。 默认情况下,JobHistory Server 使用端口 10020 进行 IPC 通信。如果 JobHistory 服务器在远程计算机上运行,则在配置客户端或Web UI以与其通信时,需要指定IPC主机和端口。例如,在Hadoop Web UI中,可以通过将 mapreduce.jobhistory.address 配置属性设置为来指定 JobHistory Server IPC 主机和端口。<hostname>:<port>. 您还可以在使用命令行 Hadoop 实用程序时指定这些值,例如 mapred job -history <hostname>:<port>。请注意,JobHistoryServerIPC 地址和端口配置可以在 Hadoop 配置目录的 mapred-site.xml 文件中找到。 如果需要更改这些值,则需要更新配置文件并重新启动 JobHistory Server,以使更改生效。
  3. mapreduce.jobhistory.webapp.address,属性值的格式为 <hostname>:<port>hostname 是指运行 JobHistoryServer 的机器的主机名或IP地址,port是 JobHistoryServer Web 应用程序侦听传入请求的端口号。例如,如果 JobHistoryServer 在计算 “historyserver.example.com” 上运行并侦听端口 19888,则可以将 mapreduce.jobhistory.webapp.address 属性设置为 “historyserver.example.com:19888”,以便从另一台计算机上的 Web 浏览器访问 Web 应用程序。需要注意的是,JobHistoryServer Web 应用程序需要其他几个 Hadoop 服务正常运行才能正常工作。 这些服务包括 ResourceManager、HDFS NameNode 和 HDFS DataNodes。如果您在访问 Web 应用程序时遇到问题,则值得检查所有这些服务是否已启动并正在运行,以及是否已设置正确的配置选项。
  4. yarn.app.mapreduce.am.env,是一个在YARN主节点应用程序管理器环境下运行的 MapReduce 作业的环境变量列表。该变量包含了一些配置参数,如 Hadoop 的 classpath、JAVA_HOME等,可用于设置环境变量以方便在 MapReduce 任务运行环境中使用。在配置 YARN MapReduce 环境时,该参数非常有用。
  5. mapreduce.map.env,这是一个环境变量,用于在 MapReduce 作业的 Map 任务中指定其他需要设置的环境变量。在 Map 任务运行时,系统会自动设置这个环境变量,并根据其值设置其他必要的环境变量。这个环境变量的值是一个以逗号分隔的键值对列表,每个键值对表示一个要设置的环境变量和其值。例如:export mapreduce_map_env="JAVA_HOME=/usr/local/java,PATH=$PATH:/usr/local/bin" 这个例子指定了两个环境变量,JAVA_HOME 和 PATH。其中 JAVA_HOME 被设置为 /usr/local/java,PATH被设置为原有的值加上: /usr/local/bin。在 Map 任务运行时,这些环境变量的值就会被设置为指定的值,方便应用程序使用。
    1. mapreduce.reduce.env,是 Hadoop MapReduce 中的一个配置设置,它指定传递给 reduce 任务的环境变量列表。reduce 任务可以使用这些变量来自定义其行为或访问特定资源。例如,reduce 任务可能需要访问并非在集群的每个节点上都可用的数据库或文件系统。 通过在 mapreduce.reduce.env 中设置适当的环境变量,reduce 任务可以轻松地访问这些资源。mapreduce.reduce.env 的语法如下:mapreduce.reduce.env=<var1>=<value1>,<var2>=<value2>,... <var1>,<var2>,... 是变量名, <value1>,<value2>... 是它们的相应值。 可以指定多个变量,用逗号分隔它们。为Hadoop作业设置环境变量的推荐方法是使用 hadoop 命令的 -D 选项。 例如:hadoop jar myjob.jar -D mapreduce.reduce.env="VAR1=value1,VAR2=value2"...这会将作业中所有 reduce 任务的环境变量 VAR 1 和 VAR 2 分别设置为 value 1 和 value 2。
<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>Master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Master:19888</value>
        </property>
        <property>
                <name>yarn.app.mapreduce.am.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.map.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.reduce.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property> 
</configuration>

修改前:

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

修改后:

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

(5)修改文件 yarn-site.xml

yarn-site.xml 是 Apache Hadoop YARN 的配置文件,它代表 Yet Another Resource Negotiator。 YARN是一个跨计算机集群并行处理大量数据的分布式框架,包含一组定义YARN应用程序行为的属性。

vim yarn-site.xml

请把 yarn-site.xml 文件配置成如下内容:

  1. yarn.resourcemanager.hostname,值的格式为:0.0.0.0,这是一个在 Apache Hadoop YARN 群集上使用的配置属性,用于定义 YARN 资源管理器的主机名或 IP 地址。该属性是在 yarn-site.xml 文件中进行配置的。资源管理器是一个 YARN 服务,其主要职责是管理群集中的资源,包括内存、CPU、磁盘等等,并分配资源给正在运行的应用程序。在 YARN 群集中运行应用程序时,它们会通过 yarn.resourcemanager.hostname 所指定的主机名或 IP 地址与资源管理器进行通信,以请求和接收资源分配。如果集群中只有一个资源管理器,那么在 YARN 客户端上设置 yarn.resourcemanager.hostname 属性一般不是必需的,因为客户端会自动查找它所在的主机上的资源管理器。但如果集群中有多个资源管理器,则需要在客户端上显式设置该属性,以确定它将要连接哪一个资源管理器。
  2. yarn.nodemanager.aux-services,是YARN(Yet Another Resource Negotiator)中 NodeManager 的一个重要配置参数,它用来指定 NodeManager 启动的辅助服务。辅助服务是指在NodeManager之外运行并为 MapReduce 应用程序提供支持的服务,例如 Hive、HBase等。通常情况下,辅助服务配置文件位于 $HADOOP_HOME/etc/hadoop/ 目录下的 yarn-site.xml 文件中。
<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>Master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

修改前:

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

修改后:有一行是注释,所以其实可以不用管它。

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

传输文件到 Slave 节点中

上述5个文件全部配置完成以后,需要把Master节点上的“/usr/local/hadoop”文件夹复制到各个节点上。如果之前已经运行过伪分布式模式,建议在切换到集群模式之前首先删除之前在伪分布式模式下生成的临时文件。

因为我们要将整个 Hadoop 目录打包,然后再发送到其他节点中,所以我们需要先离开 Hadoop 的安装目录,所以先用 cd /usr/local 到达 Hadoop 安装目录的上一级目录,然后删除临时文件,之后再打包压缩发送到 Slave 节点上。注意:此时使用了 scp 命令之后是不需要输入密码的,如果需要输入密码,那就是 ssh 免密配置不成功,需要重新配置。

cd /usr/local
sudo rm -r ./hadoop/tmp     # 删除 Hadoop 临时文件
sudo rm -r ./hadoop/logs/*   # 删除日志文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制

因为我还没有格式化 Namenode,并且没有启动 DFS 服务,所以是没有 tmplogs 目录文件的。

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

cd ~
scp ./hadoop.master.tar.gz Slave1:/home/hadoop # 将压缩包发送到 Slave1 节点的 home 目录上
scp ./hadoop.master.tar.gz Slave2:/home/hadoop # 将压缩包发送到 Slave2 节点的 home 目录上
scp ./hadoop.master.tar.gz Slave3:/home/hadoop # 将压缩包发送到 Slave3 节点的 home 目录上

Slave 配置

修改主机名

在修改主机名称之前,我们需要先查看另外一个文件的内容,因为这个会对我们修改后有一定的影响。

修改 /etc/hosts 文件

我们首先是需要先打开这个文件查看内容,一般hosts文件中只能有一个127.0.0.1,其对应主机名为localhost,如果有多余127.0.0.1映射,应删除,特别是不能存在“127.0.1.1 [主机名]”这样的映射记录。修改后需要重启Linux系统。

sudo vim /etc/hosts

打开后我们可以看到这里会有被红色框框圈起来的地方,如果没有可以不用管,如果有,请把它注释掉或者直接删除。我这里选择的就是把它注释掉。注释之后效果就是如下图这样子了。

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

接着修改 /etc/hostname 文件

sudo vim /etc/hostname

执行上面命令后,就打开了“/etc/hostname”这个文件,这个文件里面记录了主机名,比如,假设安装Ubuntu系统时,设置的主机名是“hadoop01”,因此,打开这个文件以后,里面就只有“hadoop01”这一行内容,可以直接删除,并修改为“Master”(注意是区分大小写的),然后,保存退出vim编辑器,这样就完成了主机名的修改,需要重启Linux系统才能看到主机名的变化。

Slave1

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

要注意观察主机名修改前后的变化。在修改主机名之前,如果用hadoop登录Linux系统,打开终端,进入Shell命令提示符状态,会显示如下内容:

hadoop@hadoop02:~$

修改主机名并且重启系统之后,用hadoop登录Linux系统,打开终端,进入Shell命令提示符状态,会显示如下内容:

hadoop@Slave1:~$ 

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

修改完成以后,请重启节点的Linux系统。这样就完成了 Slave 节点的配置,然后,需要在各个节点上都执行如下命令,测试是否相互ping得通,如果ping不通,后面就无法顺利配置成功:

ping Master -c 3   # 只ping 3次就会停止,否则要按Ctrl+c中断ping命令
ping Slave1 -c 3

这里只演示了两个,请大家根据自己的实际情况(有多少台主机)进行修改,需要相互都可以 ping 通才算是可以连接上,关于各个主机之间的免密登陆,这里就不过多进行赘述,就默认都已经可以免密登陆了。

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据
ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据
ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

配置 Hadoop

在 Master 节点上已经配置完毕并且发送了 Hadoop 安装包到 Slave 的前提下,进行以下的配置,首先是删除旧的 Hadoop 安装包,如果以前有安装单机分布或者伪分布的话,如果没有,可以忽略这一步。然后就是对发送过来的包进行解压,解压到 /usr/local 目录下,最后给修改目录的权限。

sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)
sudo tar -zxvf ~/hadoop.master.tar.gz -C /usr/local # zxvf中的 V 可以看到解压的过程。
sudo chown -R hadoop /usr/local/hadoop

同样,如果有其他Slave节点,也要执行将 hadoop.master.tar.gz 传输到 Slave 节点以及在 Slave 节点解压文件的操作。

启动 Hadoop 集群

首次启动 Hadoop 集群时,需要先在 Master 节点执行名称节点的格式化(只需要执行这一次,后面再启动 Hadoop 时,不要再次格式化名称节点),命令如下:

hdfs namenode -format

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

现在就可以启动 Hadoop 了,启动需要在 Master 节点上进行,执行如下命令:

start-dfs.sh
start-yarn.sh
mapred --daemon start historyserver

通过命令jps可以查看各个节点所启动的进程。如果已经正确启动,则在Master节点上可以看到 NameNodeResourceManagerSecondrryNameNodeJobHistoryServer 进程,如下图所示。

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

在 Slave 节点可以看到 DataNodeNodeManager 进程,如下图所示:

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据
ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

缺少任一进程都表示出错。另外还需要在 Master 节点上通过命令hdfs dfsadmin -report查看数据节点是否正常启动,如果屏幕信息中的Live datanodes为 3 (根据实际情况进行调整),则说明集群启动成功。

hdfs dfsadmin -report

由于我有 3 个 Slave 节点充当数据节点,因此,数据节点启动成功以后,会显示如下图所示信息:

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

也可以在主机 Windows 系统的浏览器中输入地址 http:// + [Maste节点的IP] +:9870/ 或者在 Linux 系统的浏览器中输入地址 http://master:9870/ ,通过 Web 页面看到查看名称节点和数据节点的状态。如果不成功,可以通过启动日志(logs)排查原因。
这里再次强调,伪分布式模式和分布式模式切换时需要注意以下事项:
(a)从分布式切换到伪分布式时,不要忘记修改slaves配置文件;
(b)在两者之间切换时,若遇到无法正常启动的情况,可以删除所涉及节点的临时文件夹,这样虽然之前的数据会被删掉,但能保证集群正确启动。所以,如果集群以前能启动,但后来启动不了,特别是数据节点无法启动,不妨试着删除所有节点(包括Slave节点)上的 /usr/local/hadoop/tmp 文件夹,再重新执行一次 hdfs namenode -format ,再次启动即可。

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

执行分布式实例

执行分布式实例过程与伪分布式模式一样,首先创建 HDFS 上的用户目录,命令如下:

hdfs dfs -mkdir -p /user/hadoop

然后,在 HDFS 中创建一个 input 目录,并把 /usr/local/hadoop/etc/hadoop 目录中的配置文件作为输入文件复制到 input 目录中,命令如下:

hdfs dfs -mkdir input
hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

接着就可以运行 MapReduce 作业了,命令如下:

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'

运行时的输出信息与伪分布式类似,会显示 MapReduce作业的进度,如下图所示:

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

执行过程可能会有点慢,但是,如果迟迟没有进度,比如5分钟都没看到进度变化,那么不妨重启Hadoop再次测试。若重启还不行,则很有可能是内存不足引起,建议增大虚拟机的内存,或者通过更改 YARN 的内存配置来解决。

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

在执行过程中,可以在 Windows 系统浏览器中地址栏输入 http://[Master的IP地址]:8088/cluster 或在 Linux 系统中打开浏览器,在地址栏输入http://master:8088/cluster,通过Web界面查看任务进度,在Web界面点击 Tracking UI 这一列的 History 连接,可以看到任务的运行信息,如下图所示:

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

然后我们可以使用命令查看输出结果:

./bin/hdfs dfs -cat output/*

输出结果如下图所示:

ubuntu部署hadoop,Linux,hadoop,ubuntu,大数据

最后,关闭Hadoop集群,需要在Master节点执行如下命令:

stop-yarn.sh
stop-dfs.sh
mapred --daemon stop historyserver

至此就完成了 Hadoop 集群的搭建。文章来源地址https://www.toymoban.com/news/detail-781583.html

到了这里,关于Ubuntu 16.04——Hadoop集群安装配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu官方安装微信——Ubuntu16.04/18.04/20.04/22.04

    通过以下教程可以快速的安装官方版微信,本教程适用于Ubuntu16.04/18.04/20.04/22.04 进入微信下载官网下载微信Linux客户端 点击64位下载即可,如果不能下载,使用终端如下命令 双击deb文件,点击install进行安装 安装成功,可以在菜单中点击运行

    2024年02月08日
    浏览(48)
  • ubuntu16.04下编译安装python3.10

    1、安装依赖库 sudo apt install libffi-dev sudo apt install libgdbm-dev 2、编译安装openssl(下载最新版本源码即可) 安装完成后,建立软连接(如果可以正常运行,不需要建立): sudo ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1 sudo ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1 3、编译

    2024年02月11日
    浏览(57)
  • Ubuntu16.04服务器安装LLaVA对应的CUDA

    在根据 LLaVA 项目说明配置好 conda 等环境后,安装相关依赖,在测试程序中输出 torch.__version__ 查看相应的 CUDA 版本。 得到的输出结果为 2.0.1-cu117 ,说明对应版本是 CUDA 11.7 ,检查本机 CUDA 版本(命令如下,得到结果为10.0)。 检查后得到的结果是,应该是CUDA版本不够,考虑升

    2024年01月24日
    浏览(46)
  • 如何在 Ubuntu 16.04 上配置 NTP 以在 NTP Pool 项目中使用

    介绍 准确的时间记录对于几乎任何服务或软件都至关重要。电子邮件、日志记录器、事件系统和调度程序、用户认证机制以及在分布式平台上运行的服务都需要准确的时间戳来按时间顺序记录事件。这些服务使用网络时间协议(Network Time Protocol,NTP)将系统时钟与可信的外部

    2024年04月25日
    浏览(41)
  • Ubuntu16.04完美安装微信(ukylin优麒麟系统版微信WeChat)

    Ubuntu下有很多种安装微信的方式,但是很多都不太好用,我之前用的是通过deepwine的方式安装的微信,经常无法正常输入中文,脑阔疼。然后又在网上找到了ubuntukylin(优麒麟)官方提供的封装好的wine版的微信,试了一下,效果还不错,至少比之前那个强。 1.下载Wine环境包:

    2024年02月05日
    浏览(49)
  • ubuntu16.04安装语音识别whisper及whisper-ctranslate2工具(填坑篇)

    环境: 系统ubuntu16.04,显卡是NVIDIA  Quadro RTX5000 目标: 安装语音识别工具whipser/whipser-ctranslate2         因之前有过几次在linux和windows上有过部署whisper经验和使用经验,其中有使用GPU的,有CPU的,各自语音识别效率一言难尽,建议直接装whipser-ctranslate2。同时,感谢B站博主

    2024年02月04日
    浏览(40)
  • Ubuntu16.04安装Python3.8,3.7,3.9(含卸载方法,支持多版本共存)

    本文将按照Python的各个版本进行介绍的是 Ubuntu16.04 下安装相应版本 Python 的过程,可选择所需的版本进行查看,各个版本的命令基本相同,其中 Python3.8的是图解版,其余的是命令版 。本文仅在Ubuntu16.04下测试过,对于其他系统版本未测试,一般情况下具有通用性,这里看个人

    2024年02月03日
    浏览(46)
  • ubuntu16.04安装vscode遇到的code 依赖于 libnss3 (>= 2:3.30)解决

    ubuntu16.04安装vscode遇到的code 依赖于 libnss3 (= 2:3.30);然而:系统中 libnss3:amd64 的版本为 2:3.28.4-0ubuntu0.16.04.14解决方法 一开始下载了最新版本的vscode,安装时出现了上面的错误状况,最新版本的依赖库版本过低的问题,于是下载之前的版本试了一下,成功安装

    2024年02月05日
    浏览(39)
  • ubuntu16.04搭建gitlab

    工作中遇到需要在远端服务器搭建gitlab,耗时4天,踩坑无数,特此开个虚拟机再次搭建一次gitlab并记录供以后参考! 背景:为保证服务器安全,远端服务器在内网,本地只能通过指定外网IP和端口去访问远端服务器 1.本地下载ubuntu16.04的gitlab包(2021-06-01)(ubuntu版本最好能和

    2023年04月09日
    浏览(42)
  • ubuntu 16.04 安装mujoco mujoco_py gym stable_baselines版本问题

    ubuntu 16.04系统 Python 3.7.16 mujoco200 查看已有虚拟环境 conda env list 新建虚拟环境 conda create --name koopmanproject python=3.7 激活一个环境: conda activate env_name 停用当前环境: conda deactivate (py37mujoco) abc@123:~/github/spinningup$ pip list Package                       Version   Editable pro

    2024年02月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包