前言

因为比赛的限制是使用Hadoop2.7.2,估在此文章下面的也是使用Hadoop2.7.2,具体下载地址为Hadoop2.7.2

开始的准备

目前在我的实验室上有三台Linux主机,因为需要参加一个关于spark数据分析的比赛,所以眼见那几台服务器没有人用,我们团队就拿来配置成集群。具体打算配置如下的集群

主机名 IP地址(内网)
SparkMaster 10.21.32.106
SparkWorker1 10.21.32.109
SparkWorker2 10.21.32.112

首先进行的是ssh免密码登录的操作

具体操作在上一篇学习日记当中已经写到了,在此不再详细说。

配置Java环境

因为我那三台电脑也是配置好了JDK了,所以在此也不详细说。

配置好Java的机子可以使用

java -version

来查看Java的版本

下载Hadoop2.7.2

因为我最后的文件是放在/usr/local下面的,所以我也直接打开/usr/local文件夹下。直接

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz

安装Hadoop以及配置Hadoop环境

解压

tar -zxvf hadoop-2.7.2.tar.gz

删除

rm -rf hadoop-2.7.2.tar.gz

解压删除之后打开hadoop-2.7.2文件夹,在etc/hadoop/hadoop-env.sh中配置JDK的信息

先查看本机的jdk目录地址在哪里

echo $JAVA_HOME

vi etc/hadoop/hadoop-env.sh

export JAVA_HOME=${JAVA_HOME}

改为

export JAVA_HOME=/usr/java/jdk1.8.0_131

为了方便我们以后开机之后可以立刻使用到Hadoop的bin目录下的相关命令,可以把hadoop文件夹下的binsbin目录配置到/etc/profile文件中。

vi /etc/profile

添加

export PATH=$PATH:/usr/local/hadoop-2.7.2/bin:/usr/local/hadoop-2.7.7/sbin

按一下esc,按着shift+两次z键保存

使用

source  /etc/profile

使得命令配置信息生效,是否生效可以通过

hadoop version

查看

配置Hadoop分布式集群

前言

考虑是为了建立spark集群,所以主机命名为SparkMaster SparkWorker1 SparkWorker2

修改主机名

vi /etc/hostname

修改里面的名字为SprakMaster,按一下esc,按着shift+两次z键保存。

设置hosts文件使得主机名和IP地址对应关系

vi /etc/hosts

配置主机名和IP地址的对应关系。

Ps:其他两台slave的主机也修改对应的SparkWorker1 SparkWorker2,如果修改完主机名字之后户籍的名字没有生效,那么重启系统便可以。三台机子的hostname与hosts均要修改

在三台机子的总的hadoop-2.7.2文件夹下建立如下四个文件夹

  • 目录/tmp,用来存储临时生成的文件
  • 目录/hdfs,用来存储集群数据
  • 目录hdfs/data,用来存储真正的数据
  • 目录hdfs/name,用来存储文件系统元数据
mkdir tmp hdfs hdfs/data hdfs/name

配置hadoop文件

在此先修改SparkMaster的配置文件,然后修改完毕后通过rsync命令复制到其他节点电脑上。

修改core-site.xml

vi etc/hadoop/core-site.xml

具体修改如下:

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://SparkMaster:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-2.7.2/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>

变量fs.defaultFS保存了NameNode的位置,HDFS和MapReduce组件都需要它。这就是它出现在core-site.xml文件中而不是hdfs-site.xml文件中的原因。

修改marpred-site.xml

具体修改如下

首先我们需要的是将marpred-site.xml复制一份:

cp etc/hadoop/marpred-site.xml.template etc/hadoop/marpred-site.xml
vi etc/hadoop/marpred-site.xml.template

此处修改的是marpred-site.xml,不是marpred-site.xml.template

具体修改如下

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>SparkMaster:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>SparkMaster:19888</value>
</property>
</configuration>

修改hdfs-site.xml

vi etc/hadoop/hdfs-site.xml

具体修改如下

<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-2.7.2/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-2.7.2/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>SparkMaster:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>

PS:变量dfs.replication指定了每个HDFS数据块的复制次数,即HDFS存储文件的副本个数.我的实验环境只有一台Master和两台Worker(DataNode),所以修改为2。

配置yarn-site.xml

vi etc/hadoop/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>SparkMaster:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>SparkMaster:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>SparkMaster:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>SparkMaster:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>SparkMaster:8088</value>
</property>
</configuration>

修改slaves的内容

localhost修改成为SparkWorker1SparkWorker2

SparkMaster节点的`hadoop-2.7.2/etc/下面的文件通过以下方式放去其他节点

rsync -av /usr/local/hadoop-2.7.2/etc/ SparkWorker1:/usr/local/hadoop-2.7.2/etc/
rsync -av /usr/local/hadoop-2.7.2/etc/ SparkWorker1:/usr/local/hadoop-2.7.2/etc/

完成之后可以查看SparkWorker1SparkWorker2下面的文件是否变了

启动hadoop分布式集群

SparkMaster节点格式化集群的文件系统

输入

hadoop namenode -format

启动Hadoop集群

start-all.sh

查看各个节点的进程信息

使用

jps

查看各节点的进程信息

可以看到

此时分布式的hadoop集群已经搭好了

在浏览器输入

SparkMaster_IP:50070
SparkMaster_IP:8088

看到以下界面代表Hadoop集群已经开启了

结言

到此Hadoop的分布式集群就搭好了。这个Spark运行的基础。

参见:CentOS 6.7安装Hadoop 2.7.2

++王家林/王雁军/王家虎的《Spark 核心源码分析与开发实战》++

文章出自kwongtai'blog,转载请标明出处!

Hadoop-2.7.2集群的搭建——集群学习日记的更多相关文章

  1. Hadoop集群环境搭建步骤说明

    Hadoop集群环境搭建是很多学习hadoop学习者或者是使用者都必然要面对的一个问题,网上关于hadoop集群环境搭建的博文教程也蛮多的.对于玩hadoop的高手来说肯定没有什么问题,甚至可以说事“ ...

  2. Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享

    小伙伴们好久不见!最近略忙,博客写的有点少,嗯,要加把劲.OK,今天给大家带来一个JavaWeb中常用的架构搭建,即Nginx+Tomcat搭建服务集群,然后通过Spring Session+Redi ...

  3. 深入剖析Redis系列: Redis集群模式搭建与原理详解

    前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...

  4. redis集群与分片(2)-Redis Cluster集群的搭建与实践

    Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...

  5. Redis Cluster集群的搭建与实践

    Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...

  6. 【ZooKeeper系列】1.ZooKeeper单机版、伪集群和集群环境搭建

    ZooKeeper安装模式主要有3种: 单机版(Standalone模式)模式:仅有一个ZooKeeper服务 伪集群模式:单机多个ZooKeeper服务 集群模式:多机多ZooKeeper服务 1 ...

  7. Docker 一步搞定 ZooKeeper 集群的搭建

    Docker 一步搞定 ZooKeeper 集群的搭建 背景 原来学习 ZK 时, 我是在本地搭建的伪集群, 虽然说使用起来没有什么问题, 但是总感觉部署起来有点麻烦. 刚好我发现了 ZK 已经有了 ...

  8. zookeeper集群的搭建以及hadoop ha的相关配置

    1.环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 master作为active主机,data1作为standby备用机,三台机器均作为数据节点,yarn资源 ...

  9. Hadoop+Spark:集群环境搭建

    环境准备: 在虚拟机下,大家三台Linux ubuntu 14.04 server x64 系统(下载地址:http://releases.ubuntu.com/14.04.2/ubuntu-14.0 ...

随机推荐

  1. postgresql 多表联查

    使用语句的先后顺序并不是优先级的排序: 连接分为:内连接和外连接,外连接分为左外连接,右外连接,全连接 概念上解释,表之间联合后数据如何整合. 返回的数据条数,可以通过集合求算.假如A集合有10条数据 ...

  2. Vulkan Tutorial 13 Render passes

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Setup 在我们完成管线的创建工作,我们接下来需要告诉Vulkan渲染时候使用的f ...

  3. 由 “无法使用从远程表选择的 lob 定位符” 错误而引导出来的一系列问题解决方案

    周一上班遇到一个数据加工问题:无法使用从远程表选择的 lob 定位符,由于数据源表不是自己的,不能对源数据做修改,于是我打起了存储过程的主意 我们公司的存过是分三步走,第一层是同步源数据,第二层是对一 ...

  4. java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleExcept问题解决方案

    在部署Dynamic Web Project时,如果正确配置web.xml或者标注时,仍然出现以上异常的话,可以尝试以下内容讲解的方法: 首先,双击eclipse中的servers,位置如下图&quo ...

  5. Java IO学习笔记总结

    Java IO学习笔记总结 前言 前面的八篇文章详细的讲述了Java IO的操作方法,文章列表如下 基本的文件操作 字符流和字节流的操作 InputStreamReader和OutputStreamW ...

  6. 单机部署 kubernets 方法汇总

    #minikube : 可以方便的在本机用虚拟机创建一个开箱即用的Kubernetes集群 #kubeadm : 可以自动化的将多台Ubuntu或者CentOS主机组建成集群 #nanokube,ki ...

  7. php面试问题

    问题:请用最简单的语言告诉我PHP是什么? 回答:PHP全称:Hypertext Preprocessor,是一种用来开发动态网站的服务器脚本语言. 问题:什么是MVC? 回答:MVC由Model(模 ...

  8. ecshop获取商品销量函数

    以下函数会获取订单状态为已完成的订单中该商品的销量,此函数放在lib_goods.php文件中即可调用 /** * 获取商品销量 * * @access      public * @param    ...

  9. 使用mongodb作为Quartz.Net下的JobStore实现底层的持久化机制

    我们都知道默认的Quartz底层采用的是RAMJobStore,所有的Job,Trigger,Calendar都是用Dictionary,SortSet等等这样的数据结构进行储存,相对来说性能肯 定快 ...

  10. C#中的Dictionary的使用

    在工作中有时候会用到Dictionary,由于自己之前没用过,参考了一下前人和先辈的实践,仿照着写了一个Test,第一次用还不是很熟练,要多实践练习才能用的得心应手,写代码重在敲键盘,以此为诫.(主要 ...