1 搭建环境所使用的资源

VMware Workstation 9

ubuntu-14.04.2-desktop-amd64.iso

jdk-7u80-linux-x64.tar.gz

hadoop-2.5.0.tar.gz

zookeeper-3.4.5-cdh5.1.0.tar.gz

hbase-0.98.6-cdh5.3.0.tar.gz

实验室服务器一台

(没有用最新版的hadoop是因为也是看别人教程搭的)

2 准备工作

2.1 安装虚拟机

在Vmware上安装4台虚拟机,使用ubuntu镜像。

如果出现左边那一列不显示

关掉虚拟机,在虚拟机设置中,将显示里的 3D图形加速的勾去掉

设置好用户名和密码

2.2 设置IP地址

设置master和slave的IP,如:

(master01)10.109.252.94,

(slave01)10.109.252.95,

(slave02)10.109.252.96,

(slave03)10.109.252.97。

子码掩码:255.255.255.0

默认网关:10.109.252.1

首选DNS:10.3.9.4 10.3.9.5

网络连接要选择桥接

命令行输入ifconfig

第一行最左边的名字,就是本机的网络接口,此处为 eth0 ,不同机器可能不同。

输入命令:

sudo gedit /etc/network/interfaces

在打开的文件中,输入以下代码:

auto eth0  // 使用的网络接口,之前查询接口是为了这里

iface eth0 inet static    // eth0这个接口,使用静态ip设置

address 10.109.252.94   // 设置ip地址

netmask 255.255.255.0  // 设置子网掩码

gateway 10.109.252.1   // 设置网关

dns-nameservers 10.3.9.4   // 设置dns服务器地址

设置DNS:

sudo gedit /etc/resolv.conf

加上:

nameserver 10.3.9.4

nameserver 10.3.9.5

用以下命令使网络设置生效:

service networking restart

sudo /etc/init.d/networking restart

2.3 修改主机名

主机名存放在/etc/hostname文件中

sudo gedit /etc/hostname

主机名也就是master01,slave01这些

然后修改/etc/hosts文件:

sudo gedit /etc/hosts

127.0.0.1 localhost

10.109.252.94   master01

10.109.252.95   slave01

10.109.252.96   slave02

10.109.252.97   slave03

2.4 安装配置SSH

目的是为了无密码远程登录

首先一定要确保虚拟机能上网

然后输入命令:

sudo apt-get update
sudo apt-get install ssh

输入

ssh localhost

查看是否安装成功

关闭防火墙

sudo ufw disable

配置无密码远程登录:

第一步:产生密钥

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

第二步:导入authorized_keys

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

Master需要通过无密码的SSH登陆来控制各个slave从机,因此需要将master上的公钥复制到每个slave从机上。

在Master上输入命令:

$ scp ~/.ssh/authorized_keys mcc@slave01:~/.ssh/

$ scp ~/.ssh/authorized_keys mcc@slave02:~/.ssh/

$ scp ~/.ssh/authorized_keys mcc@slave03:~/.ssh/

这里的mcc@slave01换成你自己设置的用户名@主机名

在master01中无密码登录slave01

输入命令:

ssh slave01

遇到问题:

Agent admitted failure to sign using the key.

解决办法:

解決方式 使用 ssh-add 指令将私钥 加进来 (根据个人的密匙命名不同更改 id_dsa)
ssh-add   ~/.ssh/id_dsa

之后就成功啦

2.5 安装Java

在master和slave上分别安装Java7

创建目录:

sudo mkdir /usr/lib/jvm

解压缩到该目录:

sudo tar -zxvf jdk-7u80-linux-x64.tar.gz -C /usr/lib/jvm

修改环境变量:  

sudo gedit ~/.bashrc

文件的末尾追加下面内容:

#set oracle jdk environment

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

使环境变量马上生效:

source ~/.bashrc

3 Hadoop部署

创建一个文件夹

sudo mkdir /opt/modules

解压到/opt/modules下

sudo tar -zxf hadoop-2.5.0.tar.gz -C /opt/modules

将 hadoop-2.5.0 重命名为hadoop

sudo mv hadoop-2.5.0 hadoop

配置之前,需要在master本地文件系统创建以下文件夹:

~/dfs/name

~/dfs/data

~/tmp

mcc@master01:~$ mkdir /home/mcc/tmp

mcc@master01:~$ mkdir /home/mcc/dfs

mcc@master01:~$ mkdir /home/mcc/dfs/name

mcc@master01:~$ mkdir /home/mcc/dfs/data

用ll查看权限是否为当前用户组下的

这里要涉及到的配置文件有7个:

~/hadoop-2.5.0/etc/hadoop/hadoop-env.sh

~/hadoop-2.5.0/etc/hadoop/yarn-env.sh

~/hadoop-2.5.0/etc/hadoop/slaves

~/hadoop-2.5.0/etc/hadoop/core-site.xml

~/hadoop-2.5.0/etc/hadoop/hdfs-site.xml

~/hadoop-2.5.0/etc/hadoop/mapred-site.xml

~/hadoop-2.5.0/etc/hadoop/yarn-site.xml

以上文件默认不存在的,可以复制相应的template文件获得

进入etc/hadoop/

修改hadoop-env.sh

sudo gedit hadoop-env.sh

修改这句为:

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80

修改yarn-env.sh

sudo gedit yarn-env.sh

修改这句为:

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80

修改slaves

sudo gedit slaves

修改为:

slave01

slave02

slave03

修改core-site.xml

sudo gedit core-site.xml

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://master01:9000</value>

</property>

<property>

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

<value>131072</value>

</property>

<property>

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

<value>file:/home/mcc/tmp</value>

<description>Abase for other temporary   directories.</description>

</property>

</configuration>

修改hdfs-site.xml

sudo gedit hdfs-site.xml

在hdfs-site.xml里改

<configuration>

<property>

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

<value>master01:9001</value>

</property>

<property>

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

<value>file:/home/mcc/dfs/name</value>

</property>

<property>

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

<value>file:/home/mcc/dfs/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<property>

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

<value>true</value>

</property>

</configuration>

将mapred-site.xml.template  重命名为mapred-site.xml

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

修改mapred-site.xml

sudo gedit mapred-site.xml

<configuration>

     <property>

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

<value>yarn</value>

</property>

<property>

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

<value>master01:10020</value>

</property>

<property>

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

<value>master01:19888</value>

</property>

</configuration>

修改yarn-site.xml

sudo gedit 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>master01:8032</value>

</property>

<property>

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

<value>master01:8030</value>

</property>

<property>

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

<value>master01:8031</value>

</property>

<property>

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

<value>master01:8033</value>

</property>

<property>

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

<value>master01:8088</value>

</property>

</configuration>

修改环境变量:

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80

export JRE_HOME=${JAVA_HOME}/jre

export HADOOP_HOME=/opt/modules/hadoop

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:${HADOOP_HOME}/bin:$PATH

格式化

mcc@master01:/opt/modules/hadoop$ sudo bin/hdfs namenode -format

之后启动时报错

解决办法:

每个虚拟机都输一遍这个命令 修改目录的所有者

sudo chown -R mcc:mcc /opt/modules/

然后又出现问题,jps不显示namenode

解决办法:

输入命令: sudo chmod -R 777 /home/dfs

slave上的配置要保持和master上一致,不要去把有master的地方改成slave

在master上输:(要进入hadoop文件夹)

sbin/start-all.sh

然后成功启动hadoop集群

4 配置zookeeper

解压:

tar -zxf zookeeper-3.4.5-cdh5.1.0.tar.gz -C /opt/modules/

新建一个目录:

mcc@slave01:/opt/modules/zookeeper-3.4.5-cdh5.1.0$ mkdir zkData

在这个目录下新建一个文件叫myid

mcc@slave01:/opt/modules/zookeeper-3.4.5-cdh5.1.0/zkData$ touch myid

slave01,slave02,slave03分别写上数字1,2,3

将zoo_sample.cfg重命名

mcc@slave01:/opt/modules/zookeeper-3.4.5-cdh5.1.0/conf$ mv zoo_sample.cfg zoo.cfg

修改zoo.cfg:

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/opt/modules/zookeeper-3.4.5-cdh5.1.0/zkData

# the port at which the clients will connect

clientPort=2181

#

# Be sure to read the maintenance section of the

# administrator guide before turning on autopurge.

#

# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

#

# The number of snapshots to retain in dataDir

#autopurge.snapRetainCount=3

# Purge task interval in hours

# Set to "0" to disable auto purge feature

#autopurge.purgeInterval=1

server.1=slave01:2888:3888

server.2=slave02:2888:3888

server.3=slave03:2888:3888

将zookeeper目录移到slave02,slave03上,并修改myid

scp -r zookeeper-3.4.5-cdh5.1.0/ slave02:/opt/modules/

scp -r zookeeper-3.4.5-cdh5.1.0/ slave03:/opt/modules/

修改环境变量:

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80

export JRE_HOME=${JAVA_HOME}/jre

export HADOOP_HOME=/opt/modules/hadoop

export ZOOKEEPER_HOME=/opt/modules/zookeeper-3.4.5-cdh5.1.0

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:${HADOOP_HOME}/bin:${ZOOKEEPER_HOME}/bin:$PATH

启动:

$ZOOKEEPER_HOME/bin/zkServer.sh start

Jps查看进程,已成功启动

5 配置Hbase

解压:

tar -zxf hbase-0.98.6-cdh5.3.0.tar.gz -C /opt/modules/

配置hbase-env.sh

sudo gedit hbase-env.sh

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80

export HBASE_MANAGES_ZK=false

配置hbase-site.xml

sudo gedit hbase-site.xml

<configuration>

<property>

<name>hbase.rootdir</name>

<value>hdfs://master01:9000/hbase</value>

</property>

<property>

<name>hbase.cluster.distributed</name>

<value>true</value>

</property>

<property>

<name>hbase.zookeeper.quorum</name>

<value>slave01,slave02,slave03</value>

</property>

</configuration>

配置regionservers

sudo gedit regionservers

slave01

slave02

slave03

然后要用我们的hadoop里的jar包替换hbase里的

在hbase的lib里

rm -rf hadoop*.jar删掉所有的hadoop相关的jar包

替换

find /opt/modules/hadoop/share/hadoop -name "hadoop*jar" | xargs -i cp {} /opt/modules/hbase-0.98.6-cdh5.3.0/lib

因为Hbase是依赖于Hadoop的,它要求Hadoop的jar必须部署在HBase的lib下

然后又出现了新的问题:

FATAL [master:master01:60000] master.HMaster: Unhandled exception. Starting shutdown.

java.net.UnknownHostException: Invalid host name: local host is: (unknown); destination host is: "master01":9000; java.net.UnknownHostException; For more details see:

解决办法:(玄学)

将hbase-site.xml里的一个属性改为:

<property>

<name>hbase.rootdir</name>

<value>hdfs://10.109.252.94:9000/hbase</value>

</property>

将hbase目录移到slave01,slave02,slave03上

scp -r hbase-0.98.6-cdh5.3.0/ slave01:/opt/modules

scp -r hbase-0.98.6-cdh5.3.0/ slave02:/opt/modules

scp -r hbase-0.98.6-cdh5.3.0/ slave03:/opt/modules

启动  在master上输

mcc@master01:/opt/modules/hbase-0.98.6-cdh5.3.0$ ./bin/start-hbase.sh

启动成功

hadoop2.5搭建过程的更多相关文章

  1. 懒人记录 Hadoop2.7.1 集群搭建过程

    懒人记录 Hadoop2.7.1 集群搭建过程 2016-07-02 13:15:45 总结 除了配置hosts ,和免密码互连之外,先在一台机器上装好所有东西 配置好之后,拷贝虚拟机,配置hosts ...

  2. 【安装】Hadoop2.8.0搭建过程整理版

    Hadoop搭建过程 前期环境搭建主要分为软件的安装与配置文件的配置,集成的东西越多,配置项也就越复杂. Hadoop集成了一个动物园,所以配置项也比较多,且每个版本之间会有少许差异. 安装的方式有很 ...

  3. Hadoop完全分布式搭建过程中遇到的问题小结

    前一段时间,终于抽出了点时间,在自己本地机器上尝试搭建完全分布式Hadoop集群环境,也是借助网络上虾皮的Hadoop开发指南系列书籍一步步搭建起来的,在这里仅代表hadoop初学者向虾皮表示衷心的感 ...

  4. Ubuntu下用hadoop2.4搭建集群(伪分布式)

    要真正的学习hadoop,就必需要使用集群,可是对于普通开发人员来说,没有大规模的集群用来測试,所以仅仅能使用伪分布式了.以下介绍怎样搭建一个伪分布式集群. 为了节省时间和篇幅,前面一些步骤不再叙述. ...

  5. Hadoop2.7搭建

    Hadoop最底部是 Hadoop Distributed File System(HDFS),它存储Hadoop集群中所有存储节点上的文件.HDFS(对于本文)的上一层是MapReduce 引擎,该 ...

  6. Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题

    现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...

  7. Access应用笔记<四>-一个完整的自动化报表搭建过程

    距离之前的三篇日志已经很久啦,今天终于完成了一个比较完整的自动化报表搭建过程 基于公司数据保密原则,样板就不放到网上来了,简单说一下背景: 这次access实现的功能包括: 1)为部门整体搭建了一个员 ...

  8. iOS---XMPP环境搭建过程

    什么是即时通信? 即时通信是目前Internet上最为流行的通讯方式, 各种各样的即时通讯软件也层出不穷, 服务提供商也提供了越来越枫木的通讯服务功能. 即时通讯有多重实现方式, XMPP就是其中一种 ...

  9. 最简单的SVN环境搭建过程

    本文简单描述最简单的SVN环境搭建过程 搭建环境:windows (个人验证了windows2003,windows xp) 使用软件:Setup-Subversion-1.6.17  //Serve ...

随机推荐

  1. MT【82】凸函数

    评:对于(3)几何上来看要满足性质$P$图像来看必须下凸.这样区间中点$x=2$处不可能为最大.(4)的形式让我想起在证明算术几何平均不等式时历史上著名的柯西反向归纳证明:

  2. Java实现的一个简单的模板渲染

    代码 package com.hdwang; import java.util.HashMap; import java.util.Map; /** * Created by hdwang on 20 ...

  3. 【洛谷P1991】无线通讯网

    题目大意:给定一个 N 个顶点的完全图,边有边权,现在要求使得图中所有顶点联通的情况下,第 M-1 大的边最小值是多少. 题解:所有点联通的最小要求是所有点和连接这些点的边构成原图的一棵生成树,那么问 ...

  4. linux命令总结free命令

    free 命令是什么 free 命令是一个显示系统中空闲和已用内存大小的工具.free 命令的输出和 top 命令相似.大多数Linux发行版已经含有 free 命令. 如何运行 free 想要运行, ...

  5. LaTeX符号和图片

    \documentclass{article} \usepackage{ctex} %中文处理 \begin{document} \section{空白符号} Are you wiser than o ...

  6. C#的Lamda表达式_匿名函数

  7. 基于canvas将图片转化成字符画

    字符画大家一定非常熟悉了,那么如何把一张现有的图片转成字符画呢?HTML5让这个可能变成了现实,通过canvas,可以很轻松实现这个功能.其实原理很简单:扫描图片相应位置的像素点,再计算出其灰度值,根 ...

  8. JSBinding+Bridge.NET:Inspector拖变量支持

    之前的文档说了,JSB的设计是不允许gameObject上挂逻辑脚本的.原因很简单,在Js工程中根本就不存在C#形式的逻辑脚本,如果在Cs工程中挂上了,到了Js工程这边,直接Missing. 实际在使 ...

  9. webp实践的javascript检测方案

    function hasWebp () { // 查看Cookie,如果没有则进行以下逻辑 var img = new Image(); img.onload = handleSupport; img ...

  10. HDU 2056 龟兔赛跑 (DP)

    题意:见题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2059 解题报告:以前一直没看出来这题是个DP题,知道是DP题就简单了 .首先要把起点和终点看成 ...