Hadoop2.5.2集群部署(完全分布式)

环境介绍

硬件环境

CPU 4 MEM 4G 磁盘 60G 

软件环境

OS:centos6.5版本 64位

Hadoop:hadoop2.5.2 64位

JDK: JDK 1.8.0_91

主机配置规划

Hadoop01  172.16.1.156   (NameNode)

Hadoop02  172.16.1.157     (DataNode)

Hadoop03  172.16.1.158     (DataNode)

设置主机名

这里主机名修改不是必须条件,但是为了操作简单,建议将主机名设置一下,需要修改调整各台机器的hosts文件配置,命令如下:

如果没有足够的权限,可以切换用户为root

三台机器统一增加以下host配置:

配置免密码登录SSH

1)生成密钥:

ssh-keygen -t rsa  

2)将id_dsa.pub(公钥)追加到授权key中:

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

3)将认证文件复制到另外两台DataNode节点上:

scp ~/.ssh/authorized_keys 172.16.1.157:~/.ssh/    

scp ~/.ssh/authorized_keys 172.16.1.158:~/.ssh/  

3)测试:

ssh hadoop02或ssh hadoop03

各节点安装JDK

(1)检查jdk版本、卸载openjdk版本

查看目前安装openjdk信息:rpm -qa|grep java

卸载以上三个文件(需要root权限,登录root权限卸载)

rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64

rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

rpm -e --nodeps tzdata-java-2013g-1.el6.noarch

































(2)选择版本是jdk-8u91-linux-x64.gz

(3)解压安装:

 (4)重命名jdk为jdk1.8(用mv命令)

 (5) 配置环境变量:vi /etc/profile加入以下三行

        #JAVA_HOME  

        export JAVA_HOME=/home/hadoop/jdk1.8

        export PATH=$JAVA_HOME/bin:$PATH 


  (6)执行source /etc/profile使环境变量的配置生效

 (7)执行Java –version查看jdk版本,验证是否成功

 (8)将hadoop01机器上安装好JDK复制到另外两台节点上


























Hadoop安装





每台节点都要安装





Hadoop。



上传





hadoop-2.5.2.tar.gz



到用户





/home/hadoop/software



目录下。





解压

tar -zvxf hadoop-2.5.2.tar.gz  -C /home/hadoop/

添加环境变量

vi  /etc/profile,尾部添加如下

export JAVA_HOME=/home/hadoop/jdk1.8

export HADOOP_HOME=/home/hadoop/hadoop-2.5.2

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 CLASSPATH=.:$JAVA_HOME/lib:$HADOOP_HOME/lib:$CLASSPATH

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

设置环境变量立即生效

source /etc/profile

配置Hadoop文件

(1) core-site.xml












<configuration>


     <property>


            <name>fs.defaultFS</name>


            <value>hdfs://hadoop01:9000</value>


     </property>


     <property>


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






            <value>file:/home/hadoop/hadoop-2.5.2/hadoop_tmp</value>


     </property>


     <property>

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

            <value>131072</value>

     </property>

</configuration>















(2)hdfs-site.xml 
















<configuration>


       <property>


               <name>dfs.replication</name>


                <value>2</value>


       </property>


       <property>


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


               <value>







hadoop01










:9001</value>




       </property>


       <property>


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


              <value>file:







/home/hadoop/hadoop-2.5.2










/dfs/name</value>





              <description>namenode上存储hdfs元数据</description>



       </property>


       <property>


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


               <value>file:/







home/hadoop/hadoop-2.5.2










/dfs/data</value>








               <description>datanode上数据块物理存储位置</description>



       </property>


       <property>


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


                <value>true</value>


       </property>


</configuration> 






注:访问namenode的







webhdfs

使用50070端口,访问datanode的webhdfs使用50075端口。要想不区分端口,直接使用namenode的IP和端口进行所有webhdfs操作,就需要在所有datanode上都设置hdfs-site.xml中dfs.webhdfs.enabled为true。
























(3)mapred-site.xml





<configuration>


       <property>


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


             <value>yarn</value>


      </property>


      <property>


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


             <value>hadoop01:10020</value>


      </property>


      <property>


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


             <value>hadoop01:19888</value>


      </property>


</configuration> 


jobhistory是Hadoop自带一个历史服务器,记录Mapreduce历史作业。默认情况下,jobhistory没有启动,可用以下命令启动:




sbin/mr-jobhistory-daemon.sh start historyserver  










(4)yarn-site.xml

<configuration>

       <property>

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

              <value>mapreduce_shuffle</value>

       </property>

       <property>

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

               <value>











hadoop01
















:8032</value>

       </property>

       <property>

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

              <value>hadoop01:8030</value>

       </property>

       <property>

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

              <value>hadoop01:8031</value>

       </property>

       <property>

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

               <value>hadoop01:8033</value>

       </property>

       <property>

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

               <value>hadoop01:8088</value>

       </property>

</configuration>  

(5)修改slaves文件,添加datanode节点hostname到slaves文件中

hadoop01

hadoop02

(6)











如果已经配置了JAVA_HOME环境变量,hadoop-env.sh与yarn-env.sh这两个文件不用修改,因为里面配置就是:

























export JAVA_HOME=${JAVA_HOME}


如果没有配置JAVA_HOME环境变量,需要分别在hadoop-env.sh和yarn-env.sh中

















手动




























添加




JAVA_HOME 

















export JAVA_HOME=
























/home/hadoop/jdk1.8
































































最后,将整个hadoop-2.5.2文件夹及其子文件夹使用scp复制到两台Slave相同目录中:




















































运行Hadoop

格式化



hdfs namenode –format  





启动Hadoop





start-dfs.sh   


start-yarn.sh  


可以用一条命令:





start-all.sh







停止Hadoop







stop-all.sh 







JPS查看进程

master主节点进程:













slave数据节点进程:










通过浏览器查看集群运行状态

http://172.16.1.156:50070


http://172.16.1.156:8088/


http://172.16.1.156:19888


jobhistory是Hadoop自带一个历史服务器,记录Mapreduce历史作业。默认情况下,jobhistory没有启动,可用以下命令启动:

sbin/mr-jobhistory-daemon.sh start historyserver 

测试Hadoop

1)建立输入文件:

vi wordcount.txt   

输入内容为: 

hello you

hello me

hello everyone

2)建立目录

hadoop fs -mkdir /data/wordcount    

hadoop fs –mkdir /output/   

目录/data/wordcount用来存放Hadoop自带WordCount例子的数据文件,运行这个MapReduce任务结果输出到/output/wordcount目录中。

3)上传文件

hadoop fs -put wordcount.txt/data/wordcount/   

4)执行wordcount程序

hadoop jar usr/local/program/Hadoop-2.5.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar wordcount /data/wordcount /output/wordcount/    

5)查看结果

hadoop fs -text /output/wordcount/part-r-00000    

[root@m1mydata]# hadoop fs -text /output/wordcount/part-r-00000  

everyone  1 

hello  3  

me    1  

you   1 

搭建中遇到问题总结

问题一:





在配置环境变量过程可能遇到输入命令ls命令不能识别问题

ls -bash: ls: command not found





原因:在设置环境变量时,编辑profile文件没有写正确,将export PATH=$JAVA_HOME/bin:$PATH中冒号误写成分号 ,导致在命令行下ls等命令不能够识别。







解决方案:
 export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

















问题二:


在主机上启动hadoop集群,然后使用jps查看主从机上进程状态,能够看到主机上的resourcemanager和各个从机上的nodemanager,但是过一段时间后,从机上的nodemanager就没有了,主机上的resourcemanager还在。

原因是防火墙处于开启状态:

注:nodemanager启动后要通过心跳机制定期与RM通信,否则RM会认为NM死掉,会停止NM服务。

service 方式
开启: service iptables start 
关闭: service iptables stop

时间: 2025-01-26 19:34:56

Hadoop2.5.2集群部署(完全分布式)的相关文章

超详细从零记录Hadoop2.7.3完全分布式集群部署过程

超详细从零记录Ubuntu16.04.1 3台服务器上Hadoop2.7.3完全分布式集群部署过程.包含,Ubuntu服务器创建.远程工具连接配置.Ubuntu服务器配置.Hadoop文件配置.Hadoop格式化.启动.(首更时间2016年10月27日) 主机名/hostname IP 角色 hadoop1 192.168.193.131 ResourceManager/NameNode/SecondaryNameNode hadoop2 192.168.193.132 NodeManager/

应用服务器-关于tomcat集群配置和分布式部署

问题描述 关于tomcat集群配置和分布式部署 如题,我在阿里云上买了一个云服务器 A,8核16G 10M带宽,配置比较高了, 如果需要负载均衡.分布式部署,可不可以不重新买一台 云服务器 B 请问一下,可不可以 直接在这台 A 服务器上 安装 apache 服务器, 然后在A服务器上安装一个tomcat1服务器和一个tomcat1服务器, 修改端口,避免冲突,然后 修改各种配置 直至成功. 请问 能不能达到 集群 和 分布式的效果?简单来说,就是 分布式可不可以同时部署 在同一个机器上的不同端

虚拟机-hadoop2.x集群部署一种一个datanode无法启动

问题描述 hadoop2.x集群部署一种一个datanode无法启动 Exception in secureMain java.net.UnknownHostException: node1: node1 at java.net.InetAddress.getLocalHost(InetAddress.java:1473) at org.apache.hadoop.security.SecurityUtil.getLocalHostName(SecurityUtil.java:187) at o

Hadoop-2.8.0集群搭建、hadoop源码编译和安装、host配置、ssh免密登录、hadoop配置文件中的参数配置参数总结、hadoop集群测试,安装过程中的常见错误

25.集群搭建 25.1 HADOOP集群搭建 25.1.1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有NameNode / DataNode YARN集群: 负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager 25.1.2服务器准备 本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本: ü Vmware 11.

容器集群部署 选好编排工具是关键

本文讲的是容器集群部署 选好编排工具是关键[IT168 评论]容器技术提供了组件化的环境,可以帮助业务应用在云之间轻松迁移而无需显著的返工.随着容器在企业持续获得发展,厂商将增加新的功能让用户可以创建可扩展的基于容器的环境.然而,大范围控制容器部署也会有一些并发症.容器肯定是跟资源相匹配的.这些挑战会导致集群管理和编排的并发需求. 集群管理工具是一个通过图形界面或者通过命令行来帮助你管理一组集群的软件程序.有了这个工具,你就可以监控集群里的节点,配置services,管理整个集群服务器.集群管理

Hadoop集群部署模型纵览

vSphere Big Data Extensions(简称BDE)支持多种部署方式来构建Hadoop集群.按: 存储/计算绑定模型:将存储节点(Data Node)和计算节点(Task Tracker)部署在相同的虚拟机中.这是最直接简单的部署模型,可以用于概念验证和承载小规模集群的数据处理任务. 单一计算模型:只部署计算节点(Job Tracker和Task Tracker)的集群类型. 存储/计算分离模型:将存储节点(Data Node)和计算节点(Task Tracker)部署在不同的虚

消息中间件kafka+zookeeper集群部署、测试与应用

业务系统中,通常会遇到这些场景:A系统向B系统主动推送一个处理请求:A系统向B系统发送一个业务处理请求,因为某些原因(断电.宕机..),B业务系统挂机了,A系统发起的请求处理失败:前端应用并发量过大,部分请求丢失或后端业务系统卡死....这个时候,消息中间件就派上用场了--提升系统稳定性.可用性.可扩展性. 一.消息中间件消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置.

Kafka入门初探+伪集群部署

Kafka是目前非常流行的消息队列中间件,常用于做普通的消息队列.网站的活性数据分析(PV.流量.点击量等).日志的搜集(对接大数据存储引擎做离线分析). 全部内容来自网络,可信度有待考证!如有问题,还请及时指正. 概念介绍 在Kafka中消息队列分为三种角色: producer,即生产者,负责产生日志数据. broker,存储节点,负责按照topic中的partition分区,均匀分布式的存储分区. consumer,即消费者,负责读取使用broker中的分区. producer Kafka系

方法-应用系统集群部署架构设计(监听、通知)

问题描述 应用系统集群部署架构设计(监听.通知) A类有个a方法,B类有个b方法,当外部调用a方法时,通知b方法执行,如果b方法在执行就不通知其执行,让其继续执行,外部一直在调用a方法,但b方法一直只有一个线程在执行,应用系统是集群部署,不管部署多少应用,b还是只用一个线程在运行,或在1号服务器或在2号服务器或在N号服务器运行.这样的场景怎么去设计怎么实现,请各位大虾提供一些思路或方法,谢谢. 再描述一下场景:应用集群部署,但是公用同一个数据库,系统向外抛一个接口,调用方下行数据,调用方有多个,