centos7.4配置hadoop集群

Posted 渣渣之旅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos7.4配置hadoop集群相关的知识,希望对你有一定的参考价值。

Hadoop包括两大核心,分布式存储系统和分布式计算系统。

1、分布式存储

为什么数据需要存储在分布式的系统中哪,难道单一的计算机存储不了吗,难道现在的几个TB的硬盘装不下这些数据吗?事实上,确实装不下。比如,很多的电信通话记录就存储在很多台服务器的很多硬盘中。那么,要处理这么多数据,必须从一台一台服务器分别读取数据和写入数据,太麻烦了!

我们希望有一种文件系统,可以管辖很多服务器用于存储数据。通过这个文件系统存储数据时,感觉不到是存储到不同的服务器上的。当读取数据时,感觉不到是从不同的服务器上读取。

分布式文件系统管理的是一个服务器集群。在这个集群中,数据存储在集群的节点(即集群中的服务器)中,但是该文件系统把服务器的差异屏蔽了。那么,我们就可以像使用普通的文件系统一样使用,但是数据却分散在不同的服务器中。

命名空间(namespace):在分布式存储系统中,分散在不同节点中的数据可能属于同一个文件,为了组织众多的文件,把文件可以放到不同的文件夹中,文件夹可以一级一级的包含。我们把这种组织形式称为命名空间(namespace)。命名空间管理着整个服务器集群中的所有文件。命名空间的职责与存储真实数据的职责是不一样的。

负责命名空间职责的节点称为主节点(master node或name node),负责存储真实数据职责的节点称为从节点(slave node 或 data node)。

主/从节点:主节点负责管理文件系统的文件结构,从节点负责存储真实的数据,称为主从式结构(master-slaves)。用户操作时,也应该先和主节点打交道,查询数据在哪些从节点上存储,然后再从从节点读取。在主节点,为了加快用户访问的速度,会把整个命名空间信息都放在内存中,当存储的文件越多时,那么主节点就需要越多的内存空间。

block在从节点存储数据时,有的原始数据文件可能很大,有的可能很小,大小不一的文件不容易管理,那么可以抽象出一个独立的存储文件单位,称为块(block)。

容灾: 数据存放在集群中,可能因为网络原因或者服务器硬件原因造成访问失败,最好采用副本(replication [ˌreplɪ'keɪʃn])机制,把数据同时备份到多台服务器中,这样数据就安全了,数据丢失或者访问失败的概率就小了。

工作原理:盗图(原文链接)https://www.cnblogs.com/laov/p/3434917.html

写操作:


读操作:

centos7.4配置hadoop集群


hadoop运行架构:

centos7.4配置hadoop集群

名词解释

(1)Hadoop:Apache开源的分布式框架。

(2)HDSF:Hadoop的分布式文件系统。 

(3)NameNode:Hadoop HDFS元数据主节点服务器,负责保存DataNode 文件存储元数据信息,这个服务器是单点的。 Namenode记录着每个文件中各个块所在的数据节点的位置信息   

(4)DataNode:Hadoop数据节点,负责存储数据。

(5)JobTracker:Hadoop的Map/Reduce调度器,负责与TaskTracker通信分配计算任务并跟踪任务进度,这个服务器也是单点的。   Tracker  [ˈtrækə(r)]   跟踪器

(6)TaskTracker:Hadoop调度程序,负责Map,Reduce任务的启动和执行。 [tɑ:sk]  作业 任务

Hadoop1的组件依赖关系图

centos7.4配置hadoop集群

SecondaryNameNode它的职责是合并NameNode的edit logs到fsimage文件中。SecondaryNameNode为HDFS中提供一个检查点。它只是NameNode的一个助手节点。它不是要取代掉NameNode也不是NameNode的备份。

在以上的主从式结构中,由于主节点含有整个文件系统的目录结构信息,因为非常重要。另外,由于主节点运行时会把命名空间信息都放到内存中,因此存储的文件越多,主节点的内存就需要的越多。

 

2、分布式计算

对数据进行处理时,我们会把数据读取到内存中进行处理。如果我们对海量数据进行处理,比如数据大小是100GB,我们要统计10T文件中一共有多少个单词。要想把数据都加载到内存中几乎是不可能的,称为移动数据。

 

那么是否可以把程序代码放到存放数据的服务器上哪?因为程序代码与原始数据相比,一般很小,几乎可以忽略的,所以省下了原始数据传输的时间了。现在,数据是存放在分布式文件系统中,100GB的数据可能存放在很多的服务器上,那么就可以把程序代码分发到这些服务器上,在这些服务器上同时执行,也就是并行计算,也是分布式计算。这就大大缩短了程序的执行时间。我们把程序代码移动到数据节点的机器上执行的计算方式称为移动计算。

分布式计算需要的是最终的结果,程序代码在很多机器上并行执行后会产生很多的结果,因此需要有一段代码对这些中间结果进行汇总。Hadoop中的分布式计算一般是由两阶段完成的。第一阶段负责读取各数据节点中的原始数据,进行初步处理,对各个节点中的数据求单词数。然后把处理结果传输到第二个阶段,对中间结果进行汇总,产生最终结果,求出100GB文件总共有多少个单词,如图所示:

centos7.4配置hadoop集群

在hadoop中,分布式计算部分称为MapReduce。

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",和它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

主节点称为作业节点(jobtracker),

从节点称为任务节点(tasktracker)。

在任务节点中,运行第一阶段的代码称为map任务(map task),运行第二阶段的代码称为reduce任务(reduce task)。

下载jdk1.8 for Linux压缩包,hadoop3.1.0压缩包。下载链接分别如下:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

http://hadoop.apache.org/releases.html

配置hadoop集群

环境:

版本:CentOS Linux release 7.4.1708

内核:3.10.0-693.el7.x86_64

Hadoop3.1.0

jdk-8u161-linux-x64

安装前,3台虚拟机IP及机器名称如下:

ma   192.168.10.21    NameNode 
cl1   192.168.10.22    DataNode1 
cl2   192.168.10.23    DataNode2

实验前期环境准备:

三台机器上配置hosts文件,如下:

[root@ma ~]# vim  /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4localhost4.localdomain4

::1         localhost localhost.localdomainlocalhost6 localhost6.localdomain6

192.168.10.21   ma

192.168.10.22   cl1

192.168.10.23   cl2

复制hosts到其它两机器:

[root@ma ~]# rsync -avz-e ‘ssh’ /etc/hosts root@192.168.10.22:/etc/

[root@ma ~]# rsync -avz-e ‘ssh’ /etc/hosts root@192.168.10.23:/etc/

org.apache.hadoop.ipc.Client:Retrying connect to server: master/192.168.1.10:9000 

 

创建运行hadoop用户账号和Hadoop目录。 尽量不用root帐号运行

ma

[root@ma ~]# useradd -u8000  hadoop   #为了保障,在其它服务器上创建的hadoop用户ID保持一致,创建时,尽量把UID调大

[root@ma ~]# echo 123456| passwd --stdin hadoop

[root@cl1 ~]# useradd-u 8000 hadoop  ;  echo 123456 | passwd --stdin hadoop

[root@cl2 ~]# useradd -u8000 hadoop  ;  echo 123456 | passwd --stdin hadoop

注:创建用户hadoop时,不能使用参数-s /sbin/nologin  ,因为稍后我们要su - hadoop 切换用户

 

配置在ma上,可以ssh无密码登录机器ma,cl1,cl2 ,方便后期复制文件和启动服务。因为namenode启动时,会连接到datanode上启动对应的服务。

生成公钥和私钥

注意:切换到hadoop用户再操作

创建运行hadoop用户账号和Hadoop目录。  尽量不用root帐号运行

ma

[root@ma ~]# useradd -u8000  hadoop   #为了保障,在其它服务器上创建的hadoop用户ID保持一致,创建时,尽量把UID调大

[root@ma ~]# echo 123456| passwd --stdin hadoop

 

[root@cl1 ~]# useradd-u 8000 hadoop  ;  echo 123456 | passwd --stdin hadoop

[root@cl2 ~]# useradd-u 8000 hadoop  ;  echo 123456 | passwd --stdin hadoop

注:创建用户hadoop时,不能使用参数-s /sbin/nologin  ,因为稍后我们要su - hadoop 切换用户

 

配置在ma上,可以ssh无密码登录机器ma,cl1,cl2 ,方便后期复制文件和启动服务。因为namenode启动时,会连接到datanode上启动对应的服务。

 

生成root用户的公钥和私钥

[hadoop@ma ~]#ssh-keygen

导入公钥到其他datanode节点认证文件

[hadoop@ma ~]#ssh-copy-id root@192.168.10.23

[hadoop@ma ~]#ssh-copy-id root@192.168.10.22

 

配置Hadoop环境,安装Java环境JDK:三台机器上都要配置

ma安装jdk

上传jdk-8u161-linux-x64.rpm软件包到ma

[root@ma ~]# rpm -ivh jdk-8u161-linux-x64.rpm

1、安装及配置Java运行环境—jdk。升级了jdk的版本

[root@ma ~]# rpm -ivh jdk-8u161-linux-x64.rpm

[root@ma ~]#rpm -pql/root/jdk-8u161-linux-x64.rpm   #通过查看jdk的信息可以知道jdk的安装目录在/usr/java 

 

[root@ma~]#vim /etc/profile   #在文件的最后添加以下内容:

exportJAVA_HOME=/usr/java/jdk1.8.0_161

exportJAVA_BIN=/usr/java/jdk1.8.0_161/bin

exportPATH=${JAVA_HOME}/bin:$PATH

exportCLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar

 

[root@ma ~]#source /etc/profile#使配置文件生效

 

验证java运行环境是否安装成功:

[root@ma ~]#  java -version

java version"1.8.0_161"

Java(TM) SE RuntimeEnvironment (build 1.8.0_161-b12)

Java HotSpot(TM) 64-BitServer VM (build 25.161-b12, mixed mode)

如果出现安装的对应版本,说明java运行环境已经安装成功。

注:这里只是升级了jdk的版本,因为在我安装的系统中已经安装了jdk。

 

将jdk部署到其它两台机器上:

[root@ma ~]# rsync -avz-e ‘ssh’ jdk-8u161-linux-x64.rpm root@192.168.10.23:/root

[root@ma ~]# rsync -avz-e ‘ssh’ jdk-8u161-linux-x64.rpm root@192.168.10.22:/root

[root@ma ~]# rsync -avz-e ‘ssh’ /etc/profile 192.168.10.23:/etc/profile

[root@ma ~]# rsync -avz-e ‘ssh’ /etc/profile 192.168.10.22:/etc/profile

安装:

[root@cl1 ~]# rpm -ivh jdk-8u161-linux-x64.rpm

[root@cl2 ~]# rpm -ivh jdk-8u161-linux-x64.rpm

 

重新参加java运行环境并测试

[root@cl1 ~]# source/etc/profile   ;  java -version

[root@cl2 ~]# source/etc/profile   ;  java -version

 

三台机器关闭防火墙:

[root@ma ~]# systemctlstop firewalld.service ;  systemctldisable firewalld.service

[root@cl1 ~]# systemctlstop firewalld.service ;  systemctldisable firewalld.service

[root@cl2 ~]# systemctlstop firewalld.service ;  systemctldisable firewalld.service

 

 

在ma安装Hadoop 并配置成namenode主节点

使用xshell的root帐号将hadoop-3.1.0.tar.gz  上传到服务器

[root@ma ~]# mv  hadoop-3.1.0.tar.gz  /home/hadoop/

 

注意:以下步骤使用hadoop账号操作。

[root@ma ~]# su - hadoop

[hadoop@ma ~]$ tar zxvf hadoop-3.1.0.tar.gz   #只要解压文件就可以,不需要编译安装,这个操作一定要在hadoop用户下

 

创建hadoop相关的工作目录

 [hadoop@ma ~]$ mkdir -p /home/hadoop/dfs/name/home/hadoop/dfs/data /home/hadoop/tmp

[hadoop@ma ~]$ ls

dfs  hadoop-3.1.0 hadoop-3.1.0.tar.gz  tmp

 

配置Hadoop:需要修改7个配置文件。

文件位置:/home/hadoop/hadoop-3.1.0/etc/hadoop/

文件名称:hadoop-env.sh、yarn-evn.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、workers

 

1、配置文件hadoop-env.sh,指定hadoop的java运行环境

该文件是hadoop运行基本环境的配置,需要修改的为java虚拟机的位置。

[hadoop@ma hadoop-3.1.0]$vim /home/hadoop/hadoop-3.1.0/etc/hadoop/hadoop-env.sh

改:54 # export JAVA_HOME=

为:export JAVA_HOME=/usr/java/jdk1.8.0_161

注:指定java运行环境变量

 

2、配置文件yarn-env.sh,保存yarn框架的运行环境

该文件是yarn框架运行环境的配置,同样需要修改java虚拟机的位置。

yarn :Hadoop 的新 MapReduce框架。 Yarn是Hadoop 自 0.23.0 版本后新的 map-reduce 框架(Yarn) 原理 。

 

[hadoop@mahadoop-3.1.0]$ vim /home/hadoop/hadoop-3.1.0/etc/hadoop/yarn-env.sh    不需要修改。

查看优先规则:

## Precedence rules:

##

23 ## yarn-env.sh > hadoop-env.sh > hard-coded defaults

 

3、配置文件core-site.xml,指定访问hadoop web界面访问路径

这个是hadoop的核心配置文件,这里需要配置的就这两个属性,fs.default.name配置了hadoop的HDFS系统的命名,位置为主机的9000端口;

hadoop.tmp.dir配置了hadoop的tmp目录的根位置。这里使用了一个文件系统中没有的位置,所以要先用mkdir命令新建一下。

 

[hadoop@ma hadoop-3.1.0]$vim /home/hadoop/hadoop-3.1.0/etc/hadoop/core-site.xml

改:

19<configuration>

20</configuration>

注: 在<configuration>和</configuration>中间插入以一下红色和蓝色标记内容,蓝色是根据你自己的环境,需要修改的内容:

为:

<configuration>

 

 <property>

      <name>fs.defaultFS</name>

          <value>hdfs://ma:9000</value>

 </property>

 

 <property>

    <name>io.file.buffer.size</name>

         <value>13107</value>

 </property>

 

 <property>

     <name>hadoop.tmp.dir</name>

         <value>file:/home/hadoop/tmp</value>

             <description>Abase for othertemporary directories.</description>

 </property>

 

</configuration>

注:property   财产   [ˈprɒpəti] 

io.file.buffer.size 的默认值 4096 。这是读写 sequence file 的 buffer size, 可减少 I/O 次数。在大型的 Hadoop cluster,建议可设定为 65536

 

4、配置文件hdfs-site.xml

这个是hdfs的配置文件,dfs.http.address配置了hdfs的http的访问位置;

dfs.replication配置了文件块的副本数,一般不大于从机的个数。

[root@ma ~]# vim/home/hadoop/hadoop-3.1.0/etc/hadoop/hdfs-site.xml

改:19<configuration>

 20

 21 </configuration>

注: 在<configuration>和</configuration>中间插入以一下红色和蓝色标记内容:

为:

<configuration>

  <property>

     <name>dfs.namenode.secondary.http-address</name>

      <value>ma:9001</value> 

  </property>

 

  <property>

     <name>dfs.namenode.name.dir</name>

      <value>file:/home/hadoop/dfs/name</value>

  </property>

 <property>

   <name>dfs.datanode.data.dir</name>

        <value>file:/home/hadoop/dfs/data</value>

 </property>

 

 <property>

    <name>dfs.replication</name>

    <value>2</value>   

 </property>

 

 <property>

   <name>dfs.webhdfs.enabled</name>

        <value>true</value>

 </property>

 

</configuration>

注:

<property>

     <name>dfs.namenode.secondary.http-address</name>

     <value>ma:9001</value>  # 通过web界面来查看HDFS状态

 </property>

 <property>

   <name>dfs.replication</name>

   <value>2</value>    #每个Block有2个备份。

 </property>

 

5、配置文件mapred-site.xml

这个是mapreduce任务的配置

修改mapred-site.xml

[hadoop@mahadoop-3.1.0]$ vim /home/hadoop/hadoop-3.1.0/etc/hadoop/mapred-site.xml

改:19<configuration>

 20

 21 </configuration>

注: 在<configuration>和</configuration>中间插入以一下红色和蓝色标记内容:

为:

<configuration>

 

 <property>

   <name>mapreduce.framework.name</name>

    <value>yarn</value>

 </property>

 

 <property>

    <name>mapreduce.jobhistory.address</name>

     <value>0.0.0.0:10020</value>

 </property>

 

 <property>

    <name>mapreduce.jobhistory.webapp.address</name>

     <value>0.0.0.0:19888</value>

 </property>

 

</configuration>

 

注:由于hadoop2.x使用了yarn框架,所以要实现分布式部署,必须在mapreduce.framework.name属性下配置为yarn。

同时指定:Hadoop的历史服务器historyserver

Hadoop自带了一个历史服务器,可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。默认情况下,Hadoop历史服务器是没有启动的,我们可以通过下面的命令来启动Hadoop历史服务器

 

6、配置节点yarn-site.xml

该文件为yarn框架的配置,主要是一些任务的启动位置

[hadoop@ma hadoop-3.1.0]$ vim /home/hadoop/hadoop-3.1.0/etc/hadoop/yarn-site.xml   

# 修改configuration内容如下: 

改:

<configuration>

 

<!-- Site specificYARN configuration properties -->

 

</configuration>

注: 在<configuration>和</configuration>中间插入以一下红色和蓝色标记内容:

 

为:

<configuration>

 

<!-- Site specificYARN configuration properties -->

 <property>

    <name>yarn.nodemanager.aux-services</name>

     <value>mapreduce_shuffle</value>

 </property>

 

 <property>

    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

    <value>org.apache.hadoop.mapred.ShuffleHandler</value>

 </property>

 

 <property>

    <name>yarn.resourcemanager.address</name>

    <value>ma:8032</value>

 </property>

 

 <property>

    <name>yarn.resourcemanager.scheduler.address</name>

         <value>ma:8030</value>

 </property>

 

 <property>

    <name>yarn.resourcemanager.resource-tracker.address</name>

     <value>ma:8031</value>

 </property>

 

 <property>

   <name>yarn.resourcemanager.admin.address</name>

    <value>ma:8033</value>

 </property>

 

 <property>

   <name>yarn.resourcemanager.webapp.address</name>

    <value>ma:8088</value>

 </property>

<property>

<name>yarn.application.classpath</name>

<value>/home/hadoop/hadoop-3.1.0/etc/hadoop:/home/hadoop/hadoop-3.1.0/share/hadoop/common/lib/*:/home/hadoop/hadoop-3.1.0/share/hadoop/common/*:/home/hadoop/hadoop-3.1.0/share/hadoop/hdfs:/home/hadoop/hadoop-3.1.0/share/hadoop/hdfs/lib/*:/home/hadoop/hadoop-3.1.0/share/hadoop/hdfs/*:/home/hadoop/hadoop-3.1.0/share/hadoop/mapreduce/*:/home/hadoop/hadoop-3.1.0/share/hadoop/yarn:/home/hadoop/hadoop-3.1.0/share/hadoop/yarn/lib/*:/home/hadoop/hadoop-3.1.0/share/hadoop/yarn/*</value>

</property>

 

</configuration>

 

7、在workers配置文件中指定datanode节点的主机名,方便后期namenode节点调用

 

到此namenode配置成功。

[hadoop@ma hadoop-3.1.0]$vim/home/hadoop/hadoop-3.1.0/etc/hadoop/workers

删除localhost

添加:

cl2

cl1

 

生成基于hadoop用户的ssh免密码登录:因为后期使用hadoop用户启动datanode节点时,需要直接登录到对应的datanode服务器上启动datanode相关服务。

[hadoop@ma hadoop-3.1.0]$ssh-keygen

[hadoop@ma hadoop-3.1.0]$ssh-copy-id 192.168.10.22

[hadoop@ma hadoop-3.1.0]$ssh-copy-id 192.168.10.23

[hadoop@ma hadoop-3.1.0]$ssh-copy-id 192.168.10.21

 

把hadoop安装软件,复制到其他datanode节点: cl1和cl2

[hadoop@ma hadoop-3.1.0]$rsync -avz -e ‘ssh’ -r /home/hadoop/hadoop-3.1.0 hadoop@192.168.10.22:~/

[hadoop@ma hadoop-3.1.0]$rsync -avz -e ‘ssh’ -r /home/hadoop/hadoop-3.1.0 hadoop@192.168.10.23:~/

注:namenode和datanode配置的区别是:datanode上不需要运行yarn集群资源管理服务。所以datanode不需要修改yarn-site.xml 配置文件。

 

在ma上启动Hadoop

切换到hadoop用户

[root@ma ~]# su -hadoop

(3)格式化

hadoop namenode的初始化,只需要第一次的时候初始化,之后就不需要了。 因为你namenode上的文件系统是HDFS的,所以要格式化。

[hadoop@ma hadoop-3.1.0]$/home/hadoop/hadoop-3.1.0/bin/hdfs namenode -format

15/08/03 22:35:21INFO common.Storage: Storage directory /home/hadoop/dfs/name has been successfully formatted.

。。。

15/08/03 22:35:21 INFO util.ExitUtil: Exiting with status 0

15/08/03 22:35:21 INFO namenode.NameNode:SHUTDOWN_MSG:

/************************************************************

SHUTDOWN_MSG: Shutting down NameNode at ma/192.168.10.21

************************************************************/

[root@ma hadoop-3.1.0]#echo $?

0

 

查看格式化后,生成的文件:

切换到root用户,安装tree命令

[root@ma ~]# rpm -ivh/mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm

[hadoop@ma ~]$tree  /home/hadoop/dfs/

/home/hadoop/dfs/

├── data

└── name

    └── current

        ├── fsimage_0000000000000000000

        ├── fsimage_0000000000000000000.md5

        ├── seen_txid

        └── VERSION

 

(4)启动hdfs: ./sbin/start-dfs.sh,即启动HDFS分布式存储

[root@ma hadoop-3.1.0]#/home/hadoop/hadoop-3.1.0/sbin/start-dfs.sh

Starting namenodes on [ma]

ma: Warning:Permanently added 'ma' (ECDSA) to the list of known hosts.

Starting datanodes

cl2: Warning:Permanently added 'cl2' (ECDSA) to the list of known hosts.

Starting secondarynamenodes [ma]

 

报错1:

cl1: Host keyverification failed.

解决:

[hadoop@ma ~]$ssh-copy-id  192.168.10.22

[hadoop@ma ~]$ ssh 192.168.10.22   #确认可以不输入密码直接连接上cl1。

关闭后再重启:

[root@ma hadoop-3.1.0]#/home/hadoop/hadoop-3.1.0/sbin/stop-dfs.sh

[root@ma hadoop-3.1.0]#/home/hadoop/hadoop-3.1.0/sbin/start-dfs.sh

 

报错2: log文件权限不够,解决方法:

[root@ma ~]# chown hadoop.hadoop /home/hadoop/hadoop-3.1.0/logs/

报错3:ma permissiondenied,解决办法

cp ~/.ssh/ id_rsa.pub ~/ .ssh/authorized_keys

原因是因为SSH配置文件开启了公钥认证,也可以在ma机器上注释掉公钥认证

 

 

(5)查看进程,此时namenoade有进程:namenode和 secondarynamenode进程:

[root@ma ~]# ps -axu |grep namenode --color

Warning: bad syntax,perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

root      8214 4.1  9.5 1882176 110804 ?      Sl  17:39   0:17 /usr/java/jdk1.8.0_161/bin/java-Dproc_namenode -Xmx1000m

。。。

-Dhadoop.log.dir=/home/hadoop/hadoop-3.1.0/logs-Dhadoop.log.file=hadoop-root-secondarynamenode-ma.log

 

cl1和cl2上有进程:DataNode 

[root@cl1 ~]# ps -axu |grep datanode --color

Warning: bad syntax,perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

root      5749 8.8  5.2 1851956 60656 ?       Sl  17:55   0:06 /usr/java/jdk1.8.0_161/bin/java-Dproc_datanode -Xmx1000m

。。。

 

(6)在ma上启动yarn:./sbin/start-yarn.sh  即,启动分布式计算

[hadoop@ma sbin]$/home/hadoop/hadoop-3.1.0/sbin/start-yarn.sh

Startingresourcemanager

Starting nodemanagers

 

(7)查看进程:

查看ma上的ResourceManager进程,cl2和cl1上的进程NodeManager

[hadoop@ma sbin]$ ps-axu | grep resourcemanager --color


 

[root@cl1~]#  ps -axu |grep nodemanager --color


 

注:start-dfs.sh  和 start-yarn.sh 这两个脚本可用start-all.sh代替。

关闭:

[hadoop@ma ~]$ /home/hadoop/hadoop-3.1.0/sbin/stop-all.sh

开启:

[hadoop@ma ~]$/home/hadoop/hadoop-3.1.0/sbin/start-all.sh

 

启动:jobhistory服务,查看mapreduce运行状态

[hadoop@ma hadoop-3.1.0]# /home/hadoop/hadoop-3.1.0/sbin/mr-jobhistory-daemon.sh starthistoryserver

startinghistoryserver, logging to /home/hadoop/hadoop-3.1.0/logs/mapred-root-historyserver-ma.out

 

 

在主节点上启动存储服务和资源管理主服务。使用命令:

[hadoop@ma ~]$/home/hadoop/hadoop-3.1.0/sbin/hadoop-daemon.sh start datanode                                #启动从存储服务

[hadoop@ma ~]$/home/hadoop/hadoop-3.1.0/sbin/yarn-daemon.sh start nodemanager                            #启动资源管理从服务

(8)设置HADOOP_HOME环境变量,方便后期调用命令。

切换到root用户下:

[hadoop@ma ~]$ su -root

[root@ma ~]# vim/etc/profile  #在文件最后,追加以下内容:

exportHADOOP_HOME=/home/hadoop/hadoop-3.1.0

exportPATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

[root@ma ~]# su -hadoop

[hadoop@ma ~]$ start  #输入start 按两下tab键,测试命令补齐



 

(9)查看HDFS分布式文件系统状态:

[hadoop@ma sbin]$/home/hadoop/hadoop-3.1.0/bin/hdfs dfsadmin -report

 

(10)通过web界面来查看HDFS状态和查看文件块组成部分:  

[hadoop@ma hadoop-3.1.0]$/home/hadoop/hadoop-3.1.0/bin/hdfs fsck / -files -blocks

或:

http://192.168.10.21:9870/dfshealth.html#tab-datanode

centos7.4配置hadoop集群

报错:NameNode is still loading. Redirecting to the Startup Progress page.

hadoop刚刚启动时,会进入安全模式进行自检,自检完毕就好了”,但是通过命令hdfs dfsadmin -safemode get 查看,集群并不在安全模式下。

[hadoop@ma ~]$ hdfs dfsadmin -safemode get

Safe mode is OFF

更换谷歌浏览器无问题

centos7.4配置hadoop集群


(11)通过Web查看hadoop集群状态:   http://192.168.10.21:8088 

(12)查看JobHistory的内容:

http://192.168.10.21:19888/jobhistory


测试:

运行Hadoop计算任务,Word Count  字数统计
[root@ma ~]# su - hadoop

[hadoop@ma ~]$ source/etc/profile

(1)/home/hadoop目录下有两个文本文件file01.txt和file02.txt,文件内容分别为:

[hadoop@ma ~]$  vim  file01.txt

aa

bb

cc


[hadoop@ma ~]$  vim  file02.txt

ee

ff

gg


 

(2)将这两个文件放入hadoop的HDFS中:

[hadoop@ma ~]$  hadoop fs -ls /     #查看hdfs目录情况

Found 1 items

drwxrwx---   - hadoop supergroup          0 2018-02-03 18:29 /tmp

 

[hadoop@ma ~]$  hadoop fs -mkdir -p /input  #在hdpf的根目录下,创建input目录

[hadoop@ma ~]$  hadoop fs -put /home/hadoop/file*.txt  /input  #把file*.txt文件放到hdfs的input目录下

[hadoop@ma ~]$  hadoop fs -cat  /input/file01.txt    //查看命令

aa

bb

cc

 

(3)计执行 wordCount单词统计汇总并查看结果:

[hadoop@ma ~]$ hadoop jar /home/hadoop/hadoop-3.1.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jarwordcount  /input  /output

 

查看运行之后产生的文件

[hadoop@ma ~]$ hadoopfs -ls  /output

Found 2 items

-rw-r--r--   2 hadoop supergroup          0 2018-02-03 19:01 output/_SUCCESS

-rw-r--r--   2 hadoop supergroup         61 2018-02-03 19:01output/part-r-00000

 

查看运行结果

hadoop fs -catoutput/part-r-00000 

可以看到数据都已经被统计出来了。


 


以上是关于centos7.4配置hadoop集群的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7.4下部署hadoop3.1.1

Elasticsearch 7.6集群搭建(基于Centos7.4)

CentOS7.4 + Hadoop2.9安装配置管理(分布式)

CentOS7.4 + Hadoop2.7.5安装配置管理(伪分布式)

hadoop + spark+ hive 集群搭建(apache版本)

Hadoop集群配置