文档章节

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

jiejie2050
 jiejie2050
发布于 2017/06/01 20:36
字数 1518
阅读 25
收藏 2
点赞 0
评论 0

环境介绍

硬件环境

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文件配置,命令如下:

 /etc/init.d/networking restart

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

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

dd8aa2cfaa55beaa530a49a643e349bb913d3b24

配置免密码登录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

0360cbce130086d484a6657c7492222bc18e473d

卸载以上三个文件(需要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

 

8c680e19bed5f5efd4f83f0b53cc6e6b8447b522

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

(3)解压安装:

7ce92ab185ec6a7ca7fc101f38c1bf73feb594ef

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

ef13f49b7f50896e3db3c57d72d3e238f3c04265

 (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复制到另外两台节点上

0023fba61d8728eea4f130a0e3cebb7a15831a9b

92e3a219aeab4019f6d707b3ab81ab138b2e9ef7

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 

99d9ea8a27d9029686a64515807325ff79f82214

设置环境变量立即生效

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) 

配置,hadoop-env.sh与yarn-env.sh这两个文件JAVA_HOME环境变量

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

4f67c73d4bd9d0d76391a4e8e069cf1acd7f937d

e8d4ed6aa9862b21fc48ba7180a66d3fa803fa42

运行Hadoop

格式化

hdfs namenode –format  

3e67d987b311dd624a3a48ea868353ce2d94eb88

启动Hadoop

start-dfs.sh   

start-yarn.sh  

可以用一条命令:

start-all.sh

停止Hadoop

stop-all.sh 

JPS查看进程

master主节点进程:

1c96c36a082764975bda0619b125b4f72520b157

slave数据节点进程:

a668105c8df4916145dc998acb8618fe7b6bfb75

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

http://172.16.1.156:50070

d7a62127ecf57d24dadf00918bc4e95311c24440

http://172.16.1.156:8088/

8b8cbd075f8fe729c3d46173df45256daaa72bcb

http://172.16.1.156:19888

8a2d8dadf86138cab6d0c25f2f829c6d5bd02346

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

sbin/mr-jobhistory-daemon.sh start historyserver 

f0f637647312d84ff825a34cd67af66a9c7ecf9d

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

 

Q1: 
Starting namenodes on [localhost] 
ERROR: Attempting to launch hdfs namenode as root 
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting launch. 
这里写图片描述
解决1: 
是因为缺少用户定义造成的,所以分别编辑开始和关闭脚本 
$ vim sbin/start-dfs.sh 
$ vim sbin/stop-dfs.sh 
在顶部空白处添加内容: 
HDFS_DATANODE_USER=root 
HADOOP_SECURE_DN_USER=hdfs 
HDFS_NAMENODE_USER=root 
HDFS_SECONDARYNAMENODE_USER=root 
这里写图片描述
Q2: 
Starting resourcemanager 
ERROR: Attempting to launch yarn resourcemanager as root 
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting launch. 
Starting nodemanagers 
ERROR: Attempting to launch yarn nodemanager as root 
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting launch. 
解决2: 
是因为缺少用户定义造成的,所以分别编辑开始和关闭脚本 
$ vim sbin/start-yarn.sh 
$ vim sbin/stop-yarn.sh

YARN_RESOURCEMANAGER_USER=root 

YARN_NODEMANAGER_USER=root 
这里写图片描述

© 著作权归作者所有

共有 人打赏支持
jiejie2050
粉丝 2
博文 51
码字总数 9570
作品 0
广州
分布式、集群和微服务概念整理

集群是个物理形态,分布式是个工作方式。 分布式:一个业务分拆多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 1:分布式是指将不同的业务分布在不同的地方。而集群...

技术小哥哥 ⋅ 2016/07/20 ⋅ 0

Hadoop 生态圈介绍

简介 Hadoop 是一个能够处理海量数据的分布式系统基础软件框架,理论上能够通过增加计算节点以处理无限增长的数据,由java写成。其作者是 Doug Cutting,得益于谷歌的Map/Reduce计算模型和G...

bochs ⋅ 2016/11/17 ⋅ 0

Hadoop3.1.0完全分布式集群部署超详细记录

Hadoop3.1.0完全分布式集群部署,三台服务器部署结构如下github配置文件源码地址 如上图,一共三台机器作为集群,servera作为master,其他两台作为worker。 2.开始部署-前期准备(三台机器都需...

dream_an ⋅ 05/09 ⋅ 0

CentOS 64位系统进行Hadoop2.3.0本地编译及完全分布式集群的部署

本文是在小编的博文《 基于Hadoop1.2.1完全分布式集群的部署 》的基础上写作的,所有硬件环境跟之前博文的硬件环境一模一样,因此本文不想再这方面费过多的口舌,关于hosts配置、JDK的安装和...

灯下黑鬼吹灯 ⋅ 2016/11/28 ⋅ 0

分布式与集群的区别是什么?

我个人理解:集群强调的是任务的同一性,分布式强调的是差异性。例如同样是负责文件传输的服务器,对终端用户而言它只知道文件传到服务器上了,不在乎后台是几台服务器,分布在那些机房。对于...

Candy520 ⋅ 2015/10/21 ⋅ 3

oVirt+SSAN超融合架构

1. oVirt+SSAN超融合概述 虚拟化技术在不断发展中日趋成熟,随之而来各种云技术方兴未艾,对存储性能提出了更高的要求。传统网络存储不仅因为性能无法满足不断变化的虚拟化需求,而且是虚拟化...

独笔孤行 ⋅ 2017/06/12 ⋅ 0

Hadoop单机模式部署

一、Hadoop部署模式 单机模式:默认情况下运行为一个单独机器上的独立Java进程,主要用于调试环境 伪分布模式:在单个机器上模拟成分布式多节点环境,每一个Hadoop守护进程都作为一个独立的J...

结束的伤感 ⋅ 2016/04/20 ⋅ 0

JBoss Clustering

JBoss Clustering 可以让 JBoss Application Server 成为真正的企业级平台,提供故障转移、负载均衡和分布式发布,可用于部署大型可伸缩的应用程序。 特性: 完全集群支持传统的 JEE 应用和 ...

红薯 ⋅ 2014/07/31 ⋅ 0

部署hadoop集群

Hadoop部署 1. 安装完全分布式Hadoop 1.1 安装准备工作 1.1.1 规划 本安装示例将使用六台服务器(CentOS 6.5 64bit)来实现,其规划如下所示: IP地址 主机名 运行的进程或扮演的角色192.168.4...

杜保强 ⋅ 2015/11/06 ⋅ 0

hadoop2.5.2 集群中 在hdfs.site.xml中配置了secondary namenode ?启动进程时,还是找不到secondary namenode

hadoop2.5.2 集群中 在hdfs.site.xml中配置了secondary namenode 如下 dfs.nameservices hadoop-cluster1 dfs.namenode.secondary.http-address master:50090...

八戒_o ⋅ 2015/12/01 ⋅ 5

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周三乱弹 —— 这样的女人私生活太混乱了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 胖达panda :你经历过体验到人生的大起大落吗?我一朋友在10秒内体验了,哈哈。@小小编辑 请点一首《almost lover》送给他。 《almost love...

小小编辑 ⋅ 45分钟前 ⋅ 7

自己动手写一个单链表

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、概述 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对...

公众号_好好学java ⋅ 50分钟前 ⋅ 0

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部