以三个节点为例的服务器集群来安装和配置hadoop

以下是各服务器ip地址和对应所做的节点

192.168.61.128 master

192.168.61.129 slave1

192.168.61.133 slave2

首先修改每个服务器上的hosts文件

使用命令

vi /etc/hosts编辑

在最后追加

192.168.61.128 master

192.168.61.129 slave1

192.168.61.133 slave2

三行

为每个服务器创建hadoop账户

在root用户下,使用命令

useradd hadoop

passwd hadoop

输入两遍新密码完成

为每个服务器安装jdk

jdk文件版本为jdk-7u45-linux-i586.rpm

可以在官网上下载各个版本的linux jdk文件

使用命令

rpm -ivh jdk-7u45-linux-i586.rpm

进行安装

安装完成之后编辑profile文件配置环境变量

vi /etc/profile

在末尾追加

export JAVA_HOME=/usr/java/jdk1.7.0_45

export PATH=$JAVA_HOME/bin/:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

注意jdk对应的版本号

编辑完成后使用命令

source /etc/profile

保存配置

之后输入java -version可以查看jdk版本信息

配置ssh免密码登录

在每个服务器上

输入命令

chmod -R 755 /home/hadoop

mkdir ~/.ssh

 ssh-keygen -t rsa

ssh-keygen -t dsa

rsa和dsa分别生成不同加密格式的ssh密钥,直接一直按回车键保存在默认的路径

在master节点上配置authorized_keys文件

输入命令

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

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

将本地的密钥保存在authorized_keys

ssh slave1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

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

ssh slave2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

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

使用ssh分别将slave1和slave2节点上的密钥保存在authorized_keys

这样之后,master节点上的authorized_keys文件就保存了所有服务器的密钥

由于还没有设置ssh免密码登录,所以传输的时候需要输入各个节点的密码(系统对用hadoop用户的密码)

之后将这个文件分别传输到各个节点上

scp ~/.ssh/authorized_keys slave1:~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys slave2:~/.ssh/authorized_keys

配置完成

接下来要对各个节点上的.ssh目录设置权限(很重要,有时候就是因为权限问题无法登陆)

输入命令

chmod -R 700 ~/.ssh

注意当前你所在的路径

接下来可以再每个服务器上测试ssh是否可以免密码登录了

例:

在master节点上输入

ssh master date

将会提示

The authenticity of host 'master (10.10.10.100)' can't be established.

RSA key fingerprint is 99:ef:c2:9e:28:e3:b6:83:e2:00:eb:a3:ee:ad:29:d8.

Are you sure you want to continue connecting (yes/no)?

这是因为这台机器上的ssh没有把master记录在已知的主机列表中

输入yes回车即可

(之后的各个节点一样,输入yes让其记住主机,之后就可以免密码登录)

如果中间出现什么异常或者错误,有可能是权限问题导致,请百度之

在master节点上配置hadoop

将hadoop包放到/home.hadoop目录下方便操作

进入hadoop目录下的conf目录

1.修改hadoop-env.sh文件

添加

export JAVA_HOME=/usr/java/jdk1.7.0_45

配置jdk的环境变量,注意jdk版本

2.修改core-site.xml文件

<property>

<name>fs.default.name</name>

<value>hdfs://master:9000</value>

</property>

<property>

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

<value>/home/hadoop/tmp</value>

</property>

设置namenode节点的IP和端口

设置hadoop.tmp.dir路径,默认是/tmp/$username,重启就会删除该目录的文件,所以这里给他配置一个自定义的路径

3.修改hdfs-site.xml文件

<property>

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

<value>/home/hadoop/hadoop-data</value>

</property>

<property>

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

<value>/home/hadoop/hadoop-name</value>

</property>

<property>

<name>fs.checkpoint.dir</name>

<value>/home/hadoop/hadoop-namesecondary</value>

</property>

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

设置hdfs文件系统

4.修改mapred-site.xml文件

<property>

<name>mapred.job.tracker</name>

<value>master:9001</value>

</property>

设置jobtracker的ip和端口

以上xml文件的配置都只是在源文件的基础上添加对应的property节点即可

5.在conf目录下

vi masters

输入master

vi slaves

输入

slave1

slave2

有几个slave节点就写几个,注意换行

配置完成之后使用ssh将hadoop传输到各个节点上

scp -r hadoop-0.20.2/ slave1:~/

scp -r hadoop-0.20.2/ slave2:~/

传输完毕之后再master节点上

进入hadoop目录下的bin目录

输入命令

hadoop namenode -format

开始格式化namenode

注意看提示格式化是否成功

在输入命令

start-all.sh

启动hadoop集群

启动完成后

在master节点输入jps可以看到已经在运行的namenode,secondarynode和tasktracker进程

在各个slave节点上输入jps可以看到已经在运行的datanode和jobtracker进程

在master节点输入stop-all.sh可以停止集群运行

如果遇到在slave节点上的进程运行一会就自动停止

可能原因有两个:

1.系统防火墙阻止

在各个节点上,切换到root用户使用命令

service iptables stop

成功会返回三个ok提示,关闭防火墙

2.先使用stop-all.sh停止集群

在core-site.xml文件中配置的hadoop.tmp.dir的值,找到对应的路径

删除里面的文件

然后使用

hadoop namenode -format

重新格式化一下namenode

如果其实hadoop-name文件已经存在,找到这个文件夹,删除之,在重新格式化即可

在使用start-all.sh启动集群

以上每个步骤确保看到成功的提示(或者没有失败的提示)

在配置过程中就是因为没有仔细看系统提示

失败的操作一直以为是成功的导致浪费了大量的时间

另外,操作使用的hadoop版本是0.20.2

如果出现其他的错误,可以到各个节点的hadoop目录下的logs文件件查看对应的日志文件

在到网上自行百度之~

启动完成之后在任意一个节点中打开浏览器输入一下网址可以通过WEB界面查看hadoop

http://192.168.61.128:50030/(jobtracker的HTTP服务器地址和端口)

http://192.168.61.128:50060/(taskertracker的HTTP服务器地址和端口)

http://192.168.61.128:50070/(namenode的HTTP服务器地址和端口)

http://192.168.61.128:50075/(datanode的HTTP服务器地址和端口)

http://192.168.61.128:50090/(secondary namenode的HTTP服务器地址和端口)

完全分布式安装hadoop的更多相关文章

  1. 指导手册02:伪分布式安装Hadoop(ubuntuLinux)

    指导手册02:伪分布式安装Hadoop(ubuntuLinux)   Part 1:安装及配置虚拟机 1.安装Linux. 1.安装Ubuntu1604 64位系统 2.设置语言,能输入中文 3.创建 ...

  2. 第二章 伪分布式安装hadoop hbase

    安装单机模式的hadoop无须配置,在这种方式下,hadoop被认为是一个单独的java进程,这种方式经常用来调试.所以我们讲下伪分布式安装hadoop. 我们继续上一章继续讲解,安装完先试试SSH装 ...

  3. CentOS7 分布式安装 Hadoop 2.8

    1. 基本环境 1.1 操作系统 操作系统:CentOS7.3 1.2 三台虚拟机 172.20.20.100 master 172.20.20.101 slave1 172.20.20.102 sl ...

  4. 伪分布式安装Hadoop

    Hadoop简单介绍 Hadoop:适合大数据分布式存储与计算的平台. Hadoop两大核心项目: 1.HDFS:Hadoop分布式文件系统 HDFS的架构: 主从结构: 主节点,只有一个:namen ...

  5. 完全分布式安装hadoop集群

    0.安装jdk 1.配置hosts文件 2.建立hadoop运行账号 3.配置ssh免密码登录 4.在namenode上配置hadoop 4.1.修改hadoop-env.sh文件 4.2.修改yar ...

  6. CentOS7.0分布式安装HADOOP 2.6.0笔记-转载的

    三台虚拟机,IP地址通过路由器静态DHCP分配 (这样就无需设置host了). 三台机器信息如下 -      1. hadoop-a: 192.168.0.20  #master     2. ha ...

  7. CentOS 6.5 伪分布式 安装 hadoop 2.6.0

    安装 jdk -openjdk* 检查安装:java -version 创建Hadoop用户,设置Hadoop用户使之可以免密码ssh到localhost su - hadoop ssh-keygen ...

  8. Hadoop单机和伪分布式安装

    本教程为单机版+伪分布式的Hadoop,安装过程写的有些简单,只作为笔记方便自己研究Hadoop用. 环境 操作系统 Centos 6.5_64bit   本机名称 hadoop001   本机IP ...

  9. hadoop集群的搭建(分布式安装)

    集群 计算机集群是一种计算机系统,他通过一组松散集成的计算机软件和硬件连接起来高度紧密地协同完成计算工作. 集群系统中的单个计算机通常称为节点,通常通过局域网连接. 集群技术的特点: 1.通过多台计算 ...

随机推荐

  1. Lettcode Kth Largest Element in an Array

    Lettcode Kth Largest Element in an Array 题意:在无序数组中,寻找第k大的数字,注意这里考虑是重复的. 一直只会简单的O(nlogn)的做法,听说这题有O(n) ...

  2. 【ZBH选讲·拍照】

    [问题描述] 假设这是一个二次元.LYK召集了n个小伙伴一起来拍照.他们分别有自己的身高Hi和宽度Wi.为了放下这个照片并且每个小伙伴都完整的露出来,必须需要一个宽度为ΣWi,长度为max{Hi}的相 ...

  3. POJ3585:Accumulation Degree(换根树形dp)

    Accumulation Degree Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 3425   Accepted: 85 ...

  4. linux进程服务监测流程

    进程->端口监听->查阿里云端口开放->看防火墙 ps -ef | grep redis   ->netstat -an |grep redis->安全组设置端口放行规则 ...

  5. hdu 4388 Stone Game II sg函数 博弈

    Stone Game II comes. It needs two players to play this game. There are some piles of stones on the d ...

  6. Fix error of "you have been logged on with a temporary profile"

    You have been logged on with a temporary profile on windows2008 R2 After looking into this issue, I ...

  7. 【 D3.js 进阶系列 — 4.0 】 绘制箭头

    转自:http://www.ourd3js.com/wordpress/?p=660 [ D3.js 进阶系列 — 4.0 ] 绘制箭头 发表于2014/12/08 在 SVG 绘制区域中作图,在绘制 ...

  8. 关于#include <bits/stdc++.h>

    经常看人写#include <bits/stdc++.h>却不知道是干啥的? #include<bits/stdc++.h>包含了目前c++所包含的所有头文件 对比: #inc ...

  9. 无法解析的外部符号 "public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)"

    采用下面的方法.重新编译了一下依赖的库,OK了.   问题描述: 今天用VS2010编译一个在VS2008下Coding的工程的时候,VS给出了一堆链接错误信息,如下图所示: 在ErrorList里面 ...

  10. PHP使用AJax轮询实现新订单实时提醒

    业务逻辑:Ajax每隔10秒钟请求一次接口,该接口会去查询数据库是否有新的订单,如果有则返回新订单的数量,后台收到声音提示,更改后台提醒数量 提醒框可链接到订单列表,后台更改完订单状态后会提醒会消失 ...