热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

分布式部署_Hadoop学习Hadoop安装方式之:分布式部署

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Hadoop学习------Hadoop安装方式之:分布式部署相关的知识,希望对你有一定的参考价值。这里为了方便直接将单

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Hadoop学习------Hadoop安装方式之:分布式部署相关的知识,希望对你有一定的参考价值。


这里为了方便直接将单机部署过的虚拟机直接克隆,当然也可以不这样做,一个个手工部署。

创建完整克隆——>下一步——>安装位置。等待一段时间即可。

 

我这边用了三台虚拟机,分别起名master,slave1.slave2


1、修改主机名、ip


1.1关闭防火墙

CentOS系统默认开启了防火墙,在开启 Hadoop 集群之前,需要关闭集群中每个节点的防火墙。有防火墙会导致 ping 得通但 telnet 端口不通,从而导致 DataNode 启动了,但 Live datanodes 为 0 的情况。

 

在 CentOS 6.x 中,可以通过如下命令关闭防火墙:

  service iptables stop   # 关闭防火墙服务

chkconfig iptables off  # 禁止防火墙开机自启,就不用手动关闭了

 

若用是 CentOS 7,需通过如下命令关闭(防火墙服务改成了 firewall): 

systemctl stop firewalld.service    # 关闭firewall

systemctl disable firewalld.service # 禁止firewall开机启动


1.2 修改主机名

在 CentOS 6.x 中  vi /etc/sysconfig/network

在CentOS 7或者Ubuntu 中  vi  /etc/hostname

在其他两节点同样如此。分别改为slave1.slave2


1.3 修改ip地址

vi /etc/sysconfig/network-scripts/ifcfg-eth0  修改ip 地址 然后重启网卡

service network restart 发现重启失败

这是因为基本系统的网络相关配置都是基于eth0的,如果基于此克隆虚拟机继续克隆或复制新的虚拟机,网卡的标识每一次都会自动加1变成eth1(第二次克隆会变成eth2),dmesg却显示内核只识别到网卡eth0。

 

解决办法: 打开/etc/udev/rules.d/70-persistent-net.rules 记录下,eth1网卡的mac地址00:0c:29:50:bd:17

接下来  vi//etc/sysconfig/network-scripts/ifcfg-eth0

将 DEVICE="eth0"  改成  DEVICE="eth1"  ,

将 HWADDR="00:0c:29:8f:89:97" 改成上面的mac地址  HWADDR="00:0c:29:50:bd:17"

 

最后,重启网络   service network restart   然后就能重启成功


1.4 修改hosts 使所用节点IP映射

在每台虚拟机上进行如下操作。

  vi  /etc/hosts

修改完成后需要重启一下   reboot


2、打通master到slave节点的SSH无密码登录


2.1设置本机无密码登录(各节点都要)

之前在单机部署时已经设置过了,这里再说一遍,没有设置的可以看下

第一步:产生密钥

 ssh-keygen -t dsa -P \'\' -f ~/.ssh/id_dsa

第二部:导入authorized_keys

 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

第二部导入的目的是为了无密码等,这样输入如下命令:

ssh localhost


2.2 设置远程无密码登录

我这边偷懒用的是root用户,正规应该用hadoop用户

 

进入slave1的.ssh目录  cd /root/.ssh

复制公钥文件到master

 scp authorized_keys root@master:~/.ssh/authorized_keys_from_master

进入到master的.ssh目录 将文件导入到authorized_keys

cat authorized_keys_from_master  >>  authorized_keys

 此时 slave1 可以无密码远程登录master

 

同理

进入slave2的.ssh目录  cd /root/.ssh

复制公钥文件到master

 scp authorized_keys root@master:~/.ssh/authorized_keys_from_master

进入到master的.ssh目录 将文件导入到authorized_keys

cat authorized_keys_from_master  >>  authorized_keys

 

然后 将master 的authorized_keys文件复制到slave1和slave2中,他们之间就可以互相无密码远程访问。

scp authorized_keys root@salve1:~/.ssh/authorized_keys

scp authorized_keys root@salve2:~/.ssh/authorized_keys

ssh root@slave1   不需要密码就直接进去了


3、修改配置文件

集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5个配置文件,更多设置项可点击查看官方说明,这里仅设置了正常启动所必须的设置项: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。


3.1 文件slaves

文件 slaves,将作为 DataNode 的主机名写入该文件,每行一个,默认为 localhost,所以在伪分布式配置时,节点即作为 NameNode 也作为 DataNode。分布式配置可以保留 localhost,也可以删掉让 Master 节点仅作为 NameNode 使用。

 

这里让 Master 节点仅作为 NameNode 使用,因此将文件中原来的 localhost 删除,只添加两行内容:slave1。slave2

  cd  /usr/local/hadoop/etc/hadoop/

vi slaves


3.2  core-site.xml 

cd  /usr/local/hadoop/etc/hadoop/

 vi core-site.xml

在其中的添加以下内容

      

             hadoop.tmp.dir

             file:/usr/local/hadoop/tmp

             Abase for other temporary directories.

       

       

             fs.defaultFS

             hdfs://master:9000

       


3.3 hdfs-site.xml

dfs.replication 的值是副节点个数,有几个就写几个,这边设为2

cd  /usr/local/hadoop/etc/hadoop/

 vi hdfs-site.xml

其中的添加以下内容

 

                dfs.namenode.secondary.http-address

                master:50090

       

       

                dfs.replication

                1

       

       

                dfs.namenode.name.dir

file:/usr/local/hadoop/tmp/dfs/name

       

       

                dfs.datanode.data.dir

                file:/usr/local/hadoop/tmp/dfs/data

       


3.4 mapred-site.xml

cd  /usr/local/hadoop/etc/hadoop/

需要将mapred-site.xml.template 文件改名或者复制一份

mv  mapred-site.xml.template  mapred-site.xml

或  cp mapred-site.xml.template mapred-site.xml

 

然后在进行编辑   vi mapred-site.xml

 

                mapreduce.framework.name

                yarn

       

       

                mapreduce.jobhistory.address

                master:10020

       

       

                mapreduce.jobhistory.webapp.address

                master:19888

       


3.5 yarn-site.xml

cd  /usr/local/hadoop/etc/hadoop/

 vi yarn-site.xml

在其中的中 添加以下内容

                yarn.resourcemanager.hostname

                master

       

       

                yarn.nodemanager.aux-services

                mapreduce_shuffle

     


3.6 启动并检验

配置好后,按照以上步骤在各个节点均执行一边,或者将 master 上的 /usr/local/Hadoop 文件夹复制到各个节点上。

 

在master

 cd /usr/local

sudo rm -r ./hadoop/tmp     # 删除 Hadoop 临时文件

sudo rm -r ./hadoop/logs/*   # 删除日志文件

tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制

scp ./hadoop.master.tar.gz slave1:/usr/local

在slave1

tar -zxf ~/hadoop.master.tar.gz -C /usr/local

chown -R hadoop /usr/local/hadoop

在slave2上执行同样操作。就能将Hadoop部署好。

 

每个节点部署好后

 在节点上执行NameNode 的格式化

   hdfs namenode –format   或者 hadoop namenode format

 

启动hdfs   在master节点上执行  start-dfs.sh

启动yarn   在master节点上执行  start-yarn.sh

启动job history server   在master节点上执行     mr-jobhostory-daemon.sh start historyserver

 

通过命令 jps 可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程

在 Slave 节点可以看到 DataNode 和 NodeManager 进程

缺少任一进程都表示出错。另外还需要在 Master 节点上通过命令 hdfs dfsadmin -report 查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功。

 

同样我们可以通过 Web 页面看到查看 DataNode 和 NameNode 的状态:http://master:50070/。如果不成功,可以通过启动日志排查原因。


3.7执行分布式实例

创建 HDFS 上的用户目录

hdfs dfs -mkdir -p /user/hadoop

 

将 /usr/local/hadoop/etc/hadoop 中的配置文件作为输入文件复制到分布式文件系统中

hdfs dfs -mkdir input

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

 

通过查看 DataNode 的状态(占用大小有改变),输入文件确实复制到了 DataNode 中

接着就可以运行 MapReduce 作业了

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

 

运行时的输出信息与伪分布式类似,会显示 Job 的进度。

 

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

 

同样可以通过 Web 界面查看任务进度 http://master:8088/cluster,在 Web 界面点击 “Tracking UI” 这一列的 History 连接,可以看到任务的运行信息

 


4 、关闭Hadoop集群

同样关闭Hadoop集群也是在Master节点上执行的

  stop-yarn.sh

  stop-dfs.sh

  mr-jobhistory-daemon.sh stop historyserver

 

 

 

 

 

 

 



推荐阅读
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文详细介绍了cisco路由器IOS损坏时的恢复方法,包括进入ROMMON模式、设置IP地址、子网掩码、默认网关以及使用TFTP服务器传输IOS文件的步骤。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
author-avatar
2702934635_941
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有