一、集群安装条件前置

在虚拟机上先准备一个机子  按用前面【安装单机hadoop】 已完成安装jdk,hadoop和ssh、网络等配置环境等。

虚拟机和操作系统

环境:ubuntu14 + hadoop2.6+jdk1.7+ssh

虚拟机:(vmware10)

二、集群安装环境设置

Hadoop的安装为分布式模式,考虑到实际条件集群机定为3台(2台也可以)。

(1)克隆3个ubuntu实例

先关闭当前虚拟机实例,在虚拟机工具栏上点击【虚拟机】|【管理】|【克隆】,打开克隆虚拟机向导窗口点击【下一步】|【下一步】,其中克隆类型选择【创建完整克隆】,点击【下一步】,填写【虚拟机名称】|【位置】,【完成】克隆。

(2)设置3台机子的hostname

先正确设置各虚拟机的hostname 执行命令

sudo   gedit   /etc/hostname 

将文件中的名称改成想要的机器名,如 hadoop01, hadoop02, hadoop03。

(3)设置3台机子的hosts文件

修改3台虚拟机hosts文件都是一样 执行命令

sudo  gedit  /etc/hosts

在hosts文件添加如下内容

192.168.150.128  hadoop01
192.168.150.129  hadoop02
192.168.150.130  hadoop03

这样,就不用记IP了。也可以只修改一台,其他使用scp命令拷贝hosts文件。

(4)设置虚拟机的静态ip

修改3台主机设置静态ip,在hadoop0x上也要参考设置修改成具体的ip

sudo  gedit   /etc/network/interfaces

打开文件修改成已下内容(hadoop01)

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.150.128
netmask 255.255.255.0
network 192.168.150.0
boardcast 192.168.150.255
gateway 192.168.150.2

打开文件修改成已下内容(hadoop02)

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.150.129
netmask 255.255.255.0
network 192.168.150.0
boardcast 192.168.150.255
gateway 192.168.150.2

打开文件修改成已下内容(hadoop03)

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.150.130
netmask 255.255.255.0
network 192.168.150.0
boardcast 192.168.150.255
gateway 192.168.150.2

(5)配置NAT网络

1)虚拟机网络设置

在虚拟机工具栏上点击【编辑机】|【虚拟机网络编辑】,如果没有NAT模式的网络就点击【添加网络】,然后Wnet信息修改为【NAT模式】,设置子网为【192.168.150.0】,点击【NAT设置】按钮如图【NAT设置图】,点击【DCHP设置】按钮如图【DCHP设置图】,点击【应用】按钮和【确认】按钮。

NAT设置图:

DCHP设置图:

2)设置虚拟计算机NAT

选择【我的计算机】的一个虚拟机,鼠标右键选择【设置】,选择【网络适配器】,在右侧【网络连接】点击【自定义】然后选择【NAT模式】的网络,点击【确定】按钮保存

(6)重启检验网络

重启一次系统生效

每个虚拟机执行命令

ping hadoop01
ping hadoop02
ping hadoop03

正常的话,应该能ping通 。如果不能ping通,重新设置NAT网络。

(7)配置DNS服务器(虚拟机能上网忽略这个步骤)

如果不能上网,需要修改/etc/resolv.conf文件,配置DNS服务器

执行命令

sudo  gedit   /etc/resolv.conf

修改文件添加如下配置

nameserver  8.8.8.8  8.8.4.4
nameserver  124.172.174.13

(8)配置ssh免密码登录

配置ssh免密码登录是让各节点能自动通过安全认证,不影响正常通讯。

1)安装SSH(已安装的忽略)

安装ssh有两种方式:

A.在ubuntu上在线安装

执行命令

sudo  apt-get  install  ssh
sudo  apt-get  update

B.离线安装

在网上下载离线包,拷贝到ubuntu中按照离线包中的安装说明在本地进行安装

2)配置ssh的实现

配置ssh的实现思路:

在每台机子上都使用ssh-keygen生成public key,private key 所有机子的public key都拷到一台机子如hadoop01上

在hadoop01上生成一个授权key文件authorized_keys 最后把authorized_keys拷给所有集群中的机子,就能保证无密码登录

1、在所有虚拟机上,在当前用户目录下生成公钥、私钥对

执行命令

cd  /home/mk
ssh-keygen  -t  rsa  -P ''

2、导入公钥

执行hadoop01命令

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

执行完以后,可以在本机上测试下,用ssh连接自己

执行命令

ssh hadoop01
#成功登陆则退出
exit

如果提示要输入密码, 查看authorized_keys文件权限, 如果是属于其他用户的, 需要修改该文件给其他用户权限

执行命令

chmod  644  .ssh/authorized_keys 

修改文件权限,然后再测试下

ssh hadoop01

如果不需要输入密码,就连接成功,表示ok,一台机器已经搞定了。

tip:出现问题尝试解决

请先检查SSH服务是否启动,如果没启动,请启动!

如果没有.ssh目录则创建一个:

执行命令

cd  /home/mk
mkdir   .ssh 

如无权限,使用命令修改要操作文件夹的owner为当前用户:

执行命令

sudo  chown  -R  mk  /home/mk

3、在其它机器上生成公钥、密钥,并将公钥文件复制到hadoop01

执行命令:

#在hadoop0x上:
scp  .ssh/id_rsa.pub   mk@hadoop01:/home/mk/id_rsa_1.pub#在slave2上:
scp  .ssh/id_rsa.pub  mk@hadoop01:/home/mk/id_rsa_2.pub

hadoop01中,查看下/home/mk目录,应该有二个新文件id_rsa_1.pub、id_rsa_2.pub 在hadoop01上,导入这二个公钥

执行命令

cat id_rsa_1.pub >> .ssh/authorized_keys
cat id_rsa_2.pub >> .ssh/authorized_keys 

这样,hadoop01这台机器上,就有所有3台机器的公钥了。

4、将hadoop01上的“最全”公钥,复制到其它机器

在hadoop01上 执行命令

scp .ssh/authorized_keys  mk@hadoop02:/home/mk/.ssh/authorized_keys
scp .ssh/authorized_keys  mk@hadoop02:/home/mk/.ssh/authorized_keys 

修改其它机器上authorized_keys文件的权限 hadoop02以及hadoop03机器上,均执行命令

 chmod  600  .ssh/authorized_keys

5、验证

在每个虚拟机上,均用命令  ssh+其它机器的hostname 都能正常无密码连接成功 执行命令

ssh  hadoop01
ssh  hadoop02
ssh  hadoop03

6、SSH免密码设置失败解决
A.权限问题
.ssh目录,以及/home/当前用户 需要700权限,参考以下操作调整

sudo   chmod   777   ~/.ssh
sudo  chmod 700  /home/当前用户

.ssh目录下的authorized_keys文件需要600或644权限,参考以下操作调整

sudo chmod   644   ~/.ssh/authorized_keys

B.StrictModes问题

sudo gedit /etc/ssh/sshd_config
#找到
#StrictModes yes
#改成
StrictModes no

如果还不行,可以用ssh -vvv 目标机器ip 查看详情

三、配置hadoop集群

一共有7个文件要修改:
hadoop-2.6.0/etc/hadoop/hadoop-env.sh
hadoop-2.6.0/etc/hadoop/yarn-env.sh
hadoop-2.6.0/etc/hadoop/core-site.xml
hadoop-2.6.0/etc/hadoop/hdfs-site.xml
hadoop-2.6.0/etc/hadoop/mapred-site.xml
hadoop-2.6.0/etc/hadoop/yarn-site.xml
hadoop-2.6.0/etc/hadoop/slaves
执行命令

cd /home/mk/soft/hadoop-2.6.0

(1) hadoop-env.sh 、yarn-env.sh

这二个文件主要是修改JAVA_HOME改成实际本机jdk所在目录位置

执行命令

gedit  etc/hadoop/hadoop-env.sh

gedit  etc/hadoop/yarn-env.sh

打开文件找到下面这行的位置,改成(jdk目录位置,大家根据实际情况修改)

export JAVA_HOME=/home/mk/soft/jdk1.7.0_80

在 hadoop-env.sh中加上这句:

export HADOOP_PREFIX=/home/mk/soft/hadoop-2.6.0

(2)core-site.xml

参考下面的内容修改:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>fs.defaultFS</name><value>hdfs://hadoop01:9000</value>       </property><property><name>hadoop.tmp.dir</name><value>/home/mk/tmp</value></property>
</configuration> 

注:/home/mk/tmp 目录如不存在,则先mkdir手动创建
core-site.xml的完整参数请参考 
http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/core-default.xml
(3)hdfs-site.xml

参考下面的内容修改:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>dfs.datanode.ipc.address</name><value>0.0.0.0:50020</value></property><property><name>dfs.datanode.http.address</name><value>0.0.0.0:50075</value></property>  <property><name>dfs.namenode.name.dir</name><value>file:/home/mk/data/namenode</value></property><property><name>dfs.datanode.data.dir</name><value>file:/home/mk/data/datanode</value></property><property><name>dfs.namenode.secondary.http-address</name><value>hadoop02:9001</value></property>    <property><name>dfs.replication</name><value>1</value></property><property> <name>dfs.permissions</name> <value>false</value> </property></configuration>

hdfs-site.xml的完整参数请参考
http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

(4)mapred-site.xml

参考下面的内容修改:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<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>

mapred-site.xml的完整参数请参考 http://hadoop.apache.org/docs/r2.6.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

(5)yarn-site.xml

<?xml version="1.0"?>
<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.scheduler.address</name> <value>hadoop01:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>hadoop01:8025</value> </property><property> <name>yarn.resourcemanager.address</name><value>hadoop01:8040</value></property>
</configuration>

yarn-site.xml的完整参数请参考
http://hadoop.apache.org/docs/r2.6.0/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

(6)slaves

执行命令

gedit slaves

编辑该文件,输入

hadoop02
hadoop03

这样只有hadoop02,hadoop03上有datanode进程。

hadoop 1.x与2.x相比, 1.x中的很多参数已经被标识为过时,具体可参考 http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/DeprecatedProperties.html

(7)修改/etc/profile设置环境变量

执行命令

sudo gedit /etc/profile

打开/etc/profile,添加hadoop配置内容。注意CLASSPATH,PATH是在原来的配置项上添加hadoop的包路径

export HADOOP_HOME=/home/mk/soft/hadoop-2.6.0
export  CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH:$HADOOP_HOME/share/hadoop/common/hadoop-common-2.6.0.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0.jar:$HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH

使profile文件修改配置生效

source /etc/profile

(8)分发到集群的其它机器

把hadoop-2.6.0文件夹连同修改后的配置文件,通过scp拷贝到其它2台机器上。

执行命令

scp -r /home/mk/soft/hadoop-2.6.0/  mk@hadoop02:/home/mk/soft/hadoop-2.6.0
scp -r /home/mk/soft/hadoop-2.6.0/  mk@hadoop03:/home/mk/soft/hadoop-2.6.0

hadoop02、hadoop03上的hadoop临时目录(tmp)及数据目录(data),仍然要先手动创建。

(9)测试hadoop配置

在hadoop01上启用 NameNode测试
执行命令

hdfs namenode -format 

先格式化
15/02/12 21:29:53 INFO namenode.FSImage: Allocated new BlockPoolId: BP-85825581-192.168.187.102-1423747793784
15/02/12 21:29:53 INFO common.Storage: Storage directory /home/hadoop/tmp/dfs/name has been successfully formatted.
等看到执行信息有has been successfully formatted表示格式化ok

四、启动hadoop集群

(1)启动HDFS

执行命令

HADOOP_HOME/sbin/start-dfs.sh

启动完成后,输入jps查看进程

执行命令

jps

2283  NameNode

如果看到上面NameNode进程,表示hadoop01节点成功

(2)启动yarn

执行命令

start-yarn.sh 

jps

4363  ResourceManager

2283  NameNode

如果看到上面2个进程,表示 yarn启动完成。

(3)停止

执行命令

stop-dfs.sh
stop-yarn.sh

保存退出停掉刚才启动的服务

五、测试Hadoop服务

(1)hadoop01节点上,重新启动
执行命令

start-dfs.sh
start-yarn.sh

hadoop01节点上有几下2个进程:
3421 ResourceManager
3412 NameNode

hadoop02上有几下3个进程:

3214 SecondaryNameNode
3243 DataNode
3249 NodeManager

hadoop03上有几下2个进程:
2324 DataNode
2342 NodeManager

(2)web界面检查hadoop

hdfs管理界面    http://hadoop01:50070/
yarn的管理界面不再是原来的50030端口而是8088  http://hadoop01:8088/ 
 
(3)查看hadoop状态
hdfs dfsadmin -report 查看hdfs的状态报告
yarn  node -list   查看yarn的基本信息

六、其他问题

1.若namenode上的core-site.xml中的fs.defaultFS缺失,则启动时会报错。

2.若各机器上的yarn-site.xml中的yarn.resourcemanager.resource-tracker.address缺失,
    虽然resourcemanager与nodemanager进程能够正常启动,但是在执行yarn node -list会出现node数量为0的情况。
 
2.若各机器上的yarn-site.xml中的yarn.resourcemanager.scheduler.address或yarn.resourcemanager.address缺失,则在运行job时,
    会卡在INFO mapreduce.Job: Job job_1422695884569_0001 running in uber mode : false

七、使用hadoop集群运行例子

同样的例子比单机模式时间长

(1)运行自带mapreduce例子grep
执行命令

hadoop fs -mkdir /input
hadoop fs -put $HADOOP_HOME/etc/hadoop/*.xml  /input
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep /input /output 'dfs[a-z.]+'
hadoop fs -get /output  /home/hadoop/output

查看结果

cat output/*

1 dfsadmin  
得到和单机一样的结果,'dfs'只出现一次

(2)运行自带mapreduce例子wordcount
words.txt 
hello liuchengwu
hello liulao
hello dora
hello liu
hello hadoop
文件拷入/words.txt下
 
执行命令

hadoop fs -put /hpme/mk/words.txt /words.txt
hadoop  jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount
/words.txt /count1
hadoop fs -cat  /count1/*

参考文档:Hadoop MapReduce Next Generation - Cluster Setup

Hadoop入门(二)集群安装相关推荐

  1. 一步步教你Hadoop多节点集群安装配置

    一步步教你Hadoop多节点集群安装配置 1.集群部署介绍 1.1 Hadoop简介  Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统HDFS(Hado ...

  2. Hadoop,Hbase伪集群安装步骤

    Hbase和Hadoop和jdk版本一定要对应,不然很容易出错 Hbase和jdk版本对应关系 Java Version HBase 1.3+ HBase 2.1+ HBase 2.3+ JDK7 支 ...

  3. Hadoop基础之《(6)—Hadoop单机伪集群安装》

    一.安装JDK yum install java-1.8* 二.关闭防火墙 systemctl status firewalld systemctl stop firewalld systemctl ...

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

    这两天没事做了一个hadoop集群,其中遇到了各种问题,在这里和大家分享一下 1.  这里对于集群的安装我就不多废话了,我觉得这篇文章写的很好,大家可以参考一下:http://blog.csdn.ne ...

  5. Hadoop入门(二)——VMware虚拟网络设置+Windows10的IP地址配置+CentOS7静态IP设置(图文详解步骤2021)

    Hadoop入门(二)--VMware虚拟网络设置+Windows10的IP地址配置+CentOS7静态IP设置(图文详解步骤2021) 之前在上一篇文章中讲述了 CentOS7下载+VM上安装(手动 ...

  6. hadoop2.8配置_Hadoop 2.8集群安装及配置记录

    第一部分:环境配置(含操作系统.防火墙.SSH.JAVA安装等) Hadoop 2.8集群安装模拟环境为: 主机:Hostname:Hadoop-host,IP:10.10.11.225 节点1:Ho ...

  7. Python +大数据-Hadoop生态-Linux(二)-集群搭建和安装

    Python +大数据-Hadoop生态-Linux(二)-集群搭建和安装 今日课程学习目标 1.掌握Linux用户.权限管理 2.掌握Linux常用系统命令 3.掌握服务器集群环境搭建 4.了解sh ...

  8. 2021年大数据HBase(二):HBase集群安装操作

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase集群安装操作 一.上传解压HBase安装包 ...

  9. hadoop集群安装

    一.简述 本次集群安装基于4台虚拟集群下进行. hadoop版本使用 2.6.4 操作系统为 centos6.5 jdk版本为 jdk-7u67-linux-x64.tar.gz 二.准备 创建had ...

最新文章

  1. 总结三种 MySQL 大表优化方案
  2. JAVA并发-为现有的线程安全类添加原子方法
  3. 【requests】Python轻松爬取FTP
  4. 问题小结(一)——servlet生命周期、get和post请求、内置对象、单例模式等
  5. 新闻发布项目——分页公共类(PageUitl )
  6. 【C/S】FIPS安全验证问题
  7. 数据湖存储格式Hudi原理与实践
  8. 【推荐实践】推荐技术在旅游电商中的应用及挑战.pdf(附下载链接)
  9. 【DEBUG】undefined reference to `cv_bridge::toCvShare
  10. Fiddler使用过程中无法抓取https的解决方法
  11. 阅读HashMap(1.6)源码所做的一些记录
  12. 设置浏览器谷歌/edge浏览器允许跨域
  13. ReadyAPI 教程和示例(一)
  14. C#-WinForm登录窗体实现记住密码的功能(仿QQ实现)
  15. 解决高分辨率下远程桌面连接服务器,字体图标太小的问题
  16. 直播当道,平台该如何做好内容审核规避风险?
  17. 手机号码正则表达式(含虚拟运营商)
  18. 2014-5-20 摇摇车现在已经是思杨的完美座驾了
  19. Mybatis搞两下(sqlsession,动态代理)
  20. 水果店线下营销活动案例,水果店营销活动促销方案怎么做

热门文章

  1. [JS-DOM]事件监听机制
  2. mysql数据库check命令_利用mysqlcheck命令快速修复mysql数据库
  3. 数据结构与算法--丑数
  4. python常用字符串方法调用语法_Python3常用的字符串方法
  5. 南昌网络赛E Interesting Series
  6. Min_25筛有关求解次小质因子
  7. Ozon Tech Challenge 2020 (Div.1 + Div.2) C. Kuroni and Impossible Calcul 抽屉原理
  8. Educational Codeforces Round 88 D. Yet Another Yet Another Task(巧枚举)
  9. Stern-Brocot Tree
  10. cf1523C. Compression and Expansion