ITPub博客

首页 > IT职业 > IT生活 > Hadoop集群搭建

Hadoop集群搭建

IT生活 作者:始于初见止于终老 时间:2021-02-01 20:21:06 0 删除 编辑

Hadoop 是 Apache 软件基金会旗下的一个开源分布式计算平台。以 Hadoop 分布式文件系统( HDFS , Hadoop Distributed Filesystem )和 MapReduce ( Google MapReduce 的开源实现)为核心的 Hadoop 为用户提供了系统底层细节透明的分布式基础架构。

对于 Hadoop 的集群来讲,可以分成两大类角色: Master 和 Salve 。一个 HDFS 集群是由一个 NameNode 和若干个 DataNode 组成的。其中 NameNode 作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的 DataNode 管理存储的数据。 MapReduce 框架是由一个单独运行在主节点上的 JobTracker 和运行在每个集群从节点的 TaskTracker 共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个 Job 被提交时, JobTracker 接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控 TaskTracker 的执行。

从上面的介绍可以看出, HDFS 和 MapReduce 共同组成了 Hadoop 分布式系统体系结构的核心。 HDFS 在集群上实现分布式文件系统, MapReduce 在集群上实现了分布式计算和任务处理。 HDFS 在 MapReduce 任务处理过程中提供了文件操作和存储等支持, MapReduce 在 HDFS 的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了 Hadoop 分布式集群的主要任务。

具体安装步骤如下:

一、安装 Linux Centos6.7 操作系统 , 配置网络信息如下,具体步骤略

配置 host 主机名

[root@master ~]# vim /etc/sysconfig/network 

NETWORKING=yes

HOSTNAME=master # 另外两台是 slave1 和 slave2

NTPSERVERARGS=iburst

需要重启后才能生效

临时更改主机名的方法是

[root@master ~]# hostname master

[root@master ~]# bash

配置 IP

[root@master ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改 IP

IPADDR = 192.168.101.230

机器分部信息如下:

192.168.101.230 master

192.168.101.231 slave1

192.168.101.230 slave2

二、添加 3 台虚拟机 hosts 文件

slave1 和 slave2 都要添加, hosts 文件的作用,它主要用于确定每个结点的 IP 地址,方便后续 master 结点能快速查到并访问各个结点

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

# 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

# ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.101.230 master

192.168.101.231 slave1

192.168.101.232 slave2

三、建立 hadoop 运行账号密码 hadoop ,三台机器上都需要建立

[root@master ~]# useradd hadoop

[root@master ~]# passwd hadoop

更改用户 hadoop 的密码 。

新的 密码:

无效的密码: 它基于字典单词

无效的密码: 过于简单

重新输入新的 密码:

passwd : 所有的身份验证令牌已经成功更新

赋予 hadoop 用户执行所有命令的权限 ,三台主机上都添加,之后使用 sudo + 命令就增加权限了

[root@master ~]# vim /etc/sudoers

root    ALL=(ALL)        ALL

hadoop  ALL=(ALL)ALL

四、 配置 ssh 免密码登录

Hadoop 在运行中需要远程管理 Hadoop 守护进程,在 Hadoop 启动之后, NameNode 是通过 SSH 来启动和停止各个 DateNode 上的守护进程,这就必须在主从节点之间实现无密码登录执行指令,所以这里使用 SSH 无密码公钥认证方式,这样 NameNode 使用 SSH 无密码登录并启动 DateNode 进程,同样原理 DateNode 上也能使用 SSH 无密码登录到 NameNode

1 、 SSH 无密码登录原理

Master ( NameNode | JobTracker )作为客户端,要实现无密码公钥认证,连接到服务器 Salve ( DataNode | Tasktracker )上时,需要在 Master 上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的 Slave 上。当 Master 通过 SSH 连接 Salve 时, Salve 就会生成一个随机数并用 Master 的公钥对随机数进行加密,并发送给 Master 。 Master 收到加密数之后再用私钥解密,并将解密数回传给 Slave , Slave 确认解密数无误之后就允许 Master 进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端 Master 复制到 Slave 上。

2 、确认三台机器安装好 OpenSSH 的 Server 和 Client

[root@master ~]# rpm -qa | grep openssh

openssh-server-5.3p1-112.el6_7.i686

openssh-askpass-5.3p1-112.el6_7.i686

openssh-5.3p1-112.el6_7.i686

openssh-clients-5.3p1-112.el6_7.i686

[root@master ~]# rpm -qa | grep  rsync

rsync-3.0.6-12.el6.i686

如果没有安装,使用如下命令进行安装

yum install -y ssh

yum install -y rsync

service sshd restart

确认三台机器的 sshd 配置文件允 许无密码登录

[hadoop@master root]$ vi /etc/ssh/sshd_config

去掉注释符号 “#” :

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile      .ssh/authorized_keys

3 、 hadoop 用户 Master 机器上生成 dsa 加密方式的密码对,注意:使用 hadoop 用户登录虚拟机

[hadoop@master root]$ whoami

hadoop

生成密钥对, -t 加密类型 dsa -P 原密码空, -f 指定加密后文件 keyfile 导入到 .ssh/id_dsa

[hadoop@master root]$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa  

把公钥文件加入到验证文件中  

[hadoop@master root]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 

修改权限

[hadoop@master ~]$ chomod 700 ~/.ssh

[hadoop@master root]$ chmod 600 ~/.ssh/authorized_keys 

测试 ssh 无密码登录

[hadoop@master root]$  ssh localhost   # 这里不需要输入密码即可直接登录

Last login: Wed Feb 24 11:50:14 2016 from localhost 

4 、拷贝 id_dsa.pub 到 slave 并追加到 authorized_keys 中

拷贝 id_dsa.pub 到 slave1 上 /home/hadoop/ 目录下

[hadoop@master ~]$ scp ~/.ssh/id_dsa.pub hadoop@slave1:/home/hadoop/

hadoop@192.168.101.231's password:

id_dsa.pub                                    100%  603     0.6KB/s   00:00

相同方法拷贝到 slave2 上,略

hadoop 用户首先在两台 slave 上新建 /home/hadoop/.ssh 文件

[hadoop@slave1 root]$ mkdir ~/.ssh

[hadoop@slave2 root]$ ls -la ~/

drwxrwxr-x   2  hadoop hadoop  4096 2 月  24 12:07  .ssh

[hadoop@slave1 ~]$ pwd;ls

/home/hadoop

id_dsa.pub

5 、追加公钥 id_dsa.pub 内容到 authorized_keys 中

[hadoop@slave1 ~]$ cat ~/id_dsa.pub >> ~/.ssh/authorized_keys

[hadoop@slave2 ~]$ cat ~/id_dsa.pub >> ~/.ssh/authorized_keys

修改文件权限

[hadoop@slave1 ~]$ chomod 700 ~/.ssh

[hadoop@slave1 ~]$ chmod 600 ~/.ssh/authorized_keys

同样修改 slave2 机器上 .ssh 和 .ssh/quthorized_key 的权限  

测试 master 登录 slave 机器,可以免密码直接登录了

[hadoop@master ~]$ ssh slave1

Last login: Wed Feb 24 13:02:07 2016 from master

到此, hadoop 用户可以在 master 机器上使用 ssh 免密码登录 slave1 和 slave2 ,注意,现在需要在 slave1 和 slave2 上执行上面的操作,让用户 hadoop 使用 ssh 免密码密钥登录 master ,具体配置省略,最终三台虚拟机之前全部可以通过密钥免密码登录

五、安装 java 

六、下载并解压 hadoop 安装包

1 、下载 hadoop2.6 安装包

[hadoop@master local]# cd /usr/local/src/

[hadoop@master src]# sudo wget

2 、解压 hadoop2.6 ,拷贝 hadoop2.6 到 /usr/local 目录下

[hadoop@master src]# sudo  tar -zxvf hadoop-2.6.0.tar.gz

[hadoop@master src]# ls

hadoop-2.6.0   

[hadoop@master src]# mv hadoop-2.6.0 /usr/local/

[hadoop@master local]$ cd /usr/local/hadoop-2.6.0/ 

修改 hadoop 文件夹的属主和属组

[hadoop@master local]$  sudo chown -R hadoop:hadoop hadoop-2.6.0/

添加环境变量

sudo vim /etc/profile

#hadoop variable settings

HADOOP_HOME = /usr/local/hadoop-2.6.0/

export HADOOP_COMMON_HOME = $HADOOP_HOME

export HADOOP_HDFS_HOME = $HADOOP_HOME

export HADOOP_MAPRED_HOME = $HADOOP_HOME

export HADOOP_YARN_HOME = $HADOOP_HOME

export HADOOP_CONF_DIR = $HADOOP_HOME /etc/hadoop

export PATH = $PATH : $HADOOP_HOME /bin: $HADOOP_HOME /sbin: $HADOOP_HOME /lib

export HADOOP_COMMON_LIB_NATIVE_DIR = $HADOOP_HOME /lib/native

七、修改 hadoop 的配置文件

1 、配置之前,先在 站长博客 本地文件系统创建以下文件夹: /hadoop/tmp 、 /dfs/data 、 /dfs/name

[hadoop@master local]$ cd /usr/local/hadoop/

[hadoop@master hadoop-2.6.0]$ mkdir tmp

[hadoop@master hadoop-2.6.0]$ mkdir -p dfs/data

[hadoop@master hadoop-2.6.0]$ mkdir dfs/name

2 、进入 hadoop 配置文件目录,修改配置文件

主要涉及的配置文件有 7 个:都在 /hadoop-2.6.0/etc/hadoop 文件夹下

hadoop-2.6.0/etc/hadoop/hadoop-env.sh

hadoop-2.6.0/etc/hadoop/yarn-env.sh

hadoop-2.6.0/etc/hadoop/slaves

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

hadoop-2.6.0/etc/hadoop/hdfs-site.xml

hadoop-2.6.0/etc/hadoop/mapred-site.xml

hadoop-2.6.0/etc/hadoop/yarn-site.xml

[hadoop@master hadoop-2.6.0]$ cd etc/hadoop/

[hadoop@master hadoop]$ ls

capacity-scheduler.xml      httpfs-env.sh            mapred-env.sh

configuration.xsl           httpfs-log4j.properties  mapred-queues.xml.template

container-executor.cfg      httpfs-signature.secret  mapred-site.xml.template

core-site.xml               httpfs-site.xml          slaves

hadoop-env.cmd              kms-acls.xml             ssl-client.xml.example

hadoop-env.sh               kms-env.sh               ssl-server.xml.example

hadoop-metrics2.properties  kms-log4j.properties     yarn-env.cmd

hadoop-metrics.properties   kms-site.xml             yarn-env.sh

hadoop-policy.xml           log4j.properties         yarn-site.xml

hdfs-site.xml               mapred-env.cmd

( 1 )配置  hadoop-env.sh 文件,修改 JAVA_HOME

[hadoop@master hadoop]$ sudo vim  hadoop-env.sh

JAVA_HOME = /usr/local/jdk1.8.0_20/

( 2 )配置  yarn-env.sh 文件,修改 JAVA_HOME

[hadoop@master hadoop]$ sudo vim  yarn-env.sh

# some Java parameters

  export JAVA_HOME = /usr/local/jdk1.8.0_20/

( 3 )配置 slaves 文件,增加 slave 节点  

[hadoop@master hadoop]$ sudo vim slaves

slave1

slave2

( 4 )配置  core-site.xml 文件,增加 hadoop 核心配置( hdfs 文件端口是 9000 、 file:/usr/local/hadoop-2.6.0/tmp )

[hadoop@master hadoop]# vim core-site.xml

< configuration >

  < property >

  < name > fs.defaultFS < /name >

  < value > hdfs://master:9000 < /value >

  < /property >

  < property >

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

  < value > 131072 < /value >

  < /property >

  < property >

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

    < value > file:/usr/local/hadoop-2.6.0/tmp < /value >

  < description > Abasefor other temporary directories. < /description >

  < /property >

  < property >

  < name > hadoop.proxyuser.hadoop.hosts < /name >

  < value > * < /value >

  < /property >

< property >

  < name > hadoop.proxyuser.hadoop.groups < /name >

  < value > * < /value >

  < /property >

< /configuration >

( 5 )配置   hdfs-site.xml  文件,增加 hdfs 配置信息( namenode 、 datanode 端口和目录位置)

[hadoop@master hadoop]# vim hdfs-site.xml

< configuration >

  < property >

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

  < value > master:9001 < /value >

  < /property >

  < property >

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

   < value > file:/usr/local/hadoop-2.6.0/dfs/name < /value >

  < /property >

  < property >

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

  < value > file:/usr/local/hadoop-2.6.0/dfs/data < /value >

  < /property >

  < property >

  < name > dfs.replication < /name >

  < value > 3 < /value >

  < /property >

  < property >

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

  < value > true < /value >

  < /property >

< /configuration >

( 6 )配置  mapred-site.xml  文件,增加 mapreduce 配置(使用 yarn 框架、 jobhistory 使用地址以及 web 地址)

 [hadoop@master hadoop]# vim mapred-site.xml

< 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 >

< /configuration >

( 7 )配置   yarn-site.xml   文件,增加 yarn 功能

[hadoop@master hadoop]# vim yarn-site.xml

< configuration >

  < 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 > master:8032 < /value >

   < /property >

  < property >

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

   < value > master:8030 < /value >

  < /property >

  < property >

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

   < value > master:8035 < /value >

  < /property >

  < property >

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

   < value > master:8033 < /value >

    < /property >

  < property >

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

   < value > master:8088 < /value >

  < /property >

< /configuration >

3 、使用下面的命令将配置好的 hadoop 文件 copy 到另外两台 slave1 和 slave2 机器上

 scp -r /usr/local/hadoop-2.6.0/ hadoop@slave1:/usr/local/

确认 slave1 和 slave2 机器上的 /hadoop-2.6.0 文件夹和子文件夹属主和属组都是 hadoop ,否则使用下面的命令修改

[hadoop@slave1 local]$ sudo chown -R hadoop:hadoop /usr/local/hadoop-2.6.0/

八、验证 hadoop

1 、格式化 namenode:

[hadoop@master hadoop-2.6.0]$ cd /usr/local/hadoop-2.6.0/

[hadoop@master hadoop-2.6.0]$ ./bin/hdfs namenode -format

[hadoop@master hadoop-2.6.0]$ ssh slave1

Last login: Wed Feb 24 20:53:43 2016 from master

[hadoop@slave1 ~]$ cd /usr/local/hadoop-2.6.0/

[hadoop@slave1 hadoop-2.6.0]$ ./bin/hdfs namenode -format

[hadoop@master hadoop-2.6.0]$ ssh slave2

Last login: Wed Feb 24 21:05:35 2016 from master

[hadoop@slave2 ~]$ cd /usr/local/hadoop-2.6.0/

[hadoop@slave2 hadoop-2.6.0]$ ./bin/hdfs namenode -format

2 、启动 hadoop:

[hadoop@master hadoop-2.6.0]$ ./sbin/start-all.sh

[hadoop@master hadoop-2.6.0]$ jps

5552 SecondaryNameNode

6281 Jps

5690 ResourceManager

5373 NameNod

3 、   用 jps 检验各后台进程是否成功启动

[hadoop@master hadoop-2.6.0]$ jps

7170 ResourceManager

6853 NameNode

7512 Jps

7033 SecondaryNameNode

4 、其他相关命令

启动 hdfs

[hadoop@master hadoop-2.6.0]$ ./sbin/start-dfs.sh 

停止 hdfs: 

[hadoop@master hadoop-2.6.0]$ ./sbin/stop-dfs.sh 

启动 yarn:

[hadoop@master hadoop-2.6.0]$ ./sbin/start-yarn.sh

停止 yarn:

[hadoop@master hadoop-2.6.0]$ ./sbin/stop-yarn.sh 

查看集群状态:

[hadoop@master hadoop-2.6.0]$ ./bin/hdfs dfsadmin -report http://192.168.101.230:50070/


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69994154/viewspace-2755238/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2021-01-28

  • 博文量
    6
  • 访问量
    2361