0

0

VMware虚拟机、centos6下安装部署hadoop2.2

php中文网

php中文网

发布时间:2016-06-07 15:37:53

|

1659人浏览过

|

来源于php中文网

原创

最近要搭hadoop环境,不想装双系统,所以就想在虚拟机上实验一番 环境准备 1、光盘镜像:CentOS-6.0-i386-bin-DVD.iso 2、VMware10 3、hadoop版本:hahadoop-2.2.0 4、jdk1.8.0 我们要建立一个具有如下配置的集群: host name ip address os 1 master 192.168

最近要搭hadoop环境,不想装双系统,所以就想在虚拟机上实验一番

环境准备
1、光盘镜像:CentOS-6.0-i386-bin-DVD.iso

2、VMware10
3、hadoop版本:hahadoop-2.2.0 
4、jdk1.8.0

我们要建立一个具有如下配置的集群:

 host name   ip address   os
1  master  192.168.230.128  CentOS6.0
2  slave1  192.168.230.129  CentOS6.0
其中master为name node和job tracker节点,slaveN为data node和task tracker节点。


安装和配置步骤具体如下:

1. 配置虚拟网络

如果你对VMWare和网络配置比较熟悉,可以忽略这一步,但是后面配置IP地址时具体的参数可能和我说的不一样。如果你想通过一步一步操作就能成功的话,就需要这些设置

通过VMWare -> Edit -> Virtual Network Editor打开如下对话框:

VMware虚拟机、centos6下安装部署hadoop2.2

在上面的列表中选中VMnet8 NAT那一行,然后按图设置所有内容,之后点击NAT Setting按钮,打开如下对话框,确保各个参数如图中所示设置。

VMware虚拟机、centos6下安装部署hadoop2.2

创建虚拟机比较简单,注意VMnet配置使用NAT就可以了,创建两个centOS6虚拟机,当然为了方便,最好装一下VMware Tools,这种资料网上很多,就不赘述了。

2. 配置网络

关掉SELINUX:vi /etc/selinux/config ,设置SELINUX=disabled,保存退出。

关闭防火墙:/sbin/service iptables stop;chkconfig --level 35 iptables off 

修改IP地址为静态地址:vi /etc/sysconfig/network-scripts/ifcfg-eth0,将其内容改为如下图所示,注意HWADDR那一行,你所创建的虚拟机的值很可能与之不同,保持原值,不要修改它!

VMware虚拟机、centos6下安装部署hadoop2.2

修改主机名称: vi /etc/sysconfig/network,将其内容改为如下图所示:

VMware虚拟机、centos6下安装部署hadoop2.2

修改hosts映射:vi /etc/hosts,将其内容改为如下图所示。我们在这里加入了master和slave1的映射项。(这里我把localhost都给删了,最好还是保留吧,直接在后面append这些映射项就可以了)

VMware虚拟机、centos6下安装部署hadoop2.2

执行:service network restart 以重启网络。

3. 安装JDK

下载最新版本的jdk,然后在namenode和datanode节点上安装

rpm -ivh jdk-8-linux-i586.rpm

root用户登陆,命令行中执行命令”vi /etc/profile”,配置环境变量

VMware虚拟机、centos6下安装部署hadoop2.2

保存并退出,执行以下命令使配置生效

source  /etc/profile

在终端输入java –version 查看java配置情况

VMware虚拟机、centos6下安装部署hadoop2.2

4. 配置所有节点之间SSH无密码验证

(1)所有节点执行以下命令,生成rsa密钥对:

ssh-keygen -t rsa

这将在/root/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。

(2)将所有datanode节点的公钥id_rsa.pub传送到namenode上:

cp  id_rsa.pub datanode01.id_rsa.pub//复制一份id_rsa.pub

scp datanode01.id_rsa.pub namenode节点ip地址:/root/.ssh/

//将公钥文件传送到namenode 

(3)namenode节点上综合所有公钥(包括自身)并传送到所有节点上

cp id_rsa.pub authorized_keys //authorized_keys名字不能错!

cat datanode01.id_rsa.pub >> authorized_keys

    然后使用SSH协议将所有公钥信息authorized_keys复制到所有DataNode的.ssh目录下

scp authorized_keys data节点ip地址: /root/.ssh/

    这样配置过后,所有节点之间可以相互SSH无密码登陆,可以通过命令

科大讯飞-AI虚拟主播
科大讯飞-AI虚拟主播

科大讯飞推出的移动互联网智能交互平台,为开发者免费提供:涵盖语音能力增强型SDK,一站式人机智能语音交互解决方案,专业全面的移动应用分析;

下载

“ssh  节点ip地址”来验证。

配置完毕,在namenode上执行“ssh 本机,所有数据节点”命令,因为ssh执行一次之后将不会再询问。

VMware虚拟机、centos6下安装部署hadoop2.2


在namenode和datanode节点上的/usr/etc/目录下新建hadoop文件夹,将hadoop-2.2.0解压到namenode节点的hadoop文件夹下(对于datanode节点上的hadoop,将用scp指令直接从namenode节点拷贝过去,这样更方便一些),修改namenode节点的/etc/profile文件,在后面添加环境变量,如下图所示:

VMware虚拟机、centos6下安装部署hadoop2.2

保存并退出,执行以下命令使配置生效

source  /etc/profile

5. 安装hadoop2.2

   1)解压缩hadoop-2.2.0.tar.gz
       tar -zxf hadoop-2.2.0.tar.gz
       默认解压缩到当前目录下面,这里解压缩/usr/etc/hadoop/目录下面
   2) 修改hadoop配置文件
       打开hadoop-2.2.0/etc/hadoop,修改里面的配置文件

      a) hadoop-env.sh,找到里面的JAVA_HOME,修改为实际地址(java_home不能写${JAVA_HOME},经过测试)
      b) yarn-env.sh ,同样找到里面的JAVA_HOME,修改为实际路径(java_home不能写${JAVA_HOME},经过测试)
      c) slave  这个文件配置所有datanode节点,以便namenode搜索,本例配置如下
         slave1
      d) core-site.xml
       

    

        

            fs.defaultFS

            hdfs://master:9000

        

        

            io.file.buffer.size

            131072

        

        

            hadoop.tmp.dir

            /usr/etc/hadoop/hadoop-2.2.0/mytmp

            A base for other temporarydirectories.

        

        

            hadoop.proxyuser.root.hosts

            master

        

        

            hadoop.proxyuser.root.groups

            *

        

    

  注意fs.defaultFS为2.2.0新的变量,代替旧的:fs.default.name  

 e) hdfs-site.xml
     

    

        

            dfs.namenode.name.dir

            /usr/etc/hadoop/name

        true

        

        

            dfs.datanode.data.dir

            /usr/etc/hadoop/data

        true

        

        

            dfs.replication

        1

        

        

            dfs.permissions

            false

        

    

新的:dfs.namenode.name.dir,旧:dfs.name.dir,新:dfs.datanode.name.dir,旧:dfs.data.dir
dfs.replication确定 data block的副本数目,hadoop基于rackawareness(机架感知)默认复制3份分block,(同一个rack下两个,另一个rack下一 份,按照最短距离确定具体所需block, 一般很少采用跨机架数据块,除非某个机架down了)

  f) mapred-site.xml.template(或者mapred-site.xml,这两个名字都可以,已通过测试)
  

    

        

            mapreduce.framework.name

            yarn

        

        

            mapreduce.jobhistory.address

            master:10020

        

        

            mapreduce.jobhistory.webapp.address

            master:19888

        

        

                mapreduce.jobhistory.intermediate-done-dir

                /mr-history/tmp

        

        

            mapreduce.jobhistory.done-dir

            /mr-history/done

        

    

配置其使用 Yarn 框架执行 map-reduce 处理程序

这个地方需要把mapred-site.xml.template复制重新命名

新的计算框架取消了实体上的jobtracker, 故不需要再指定mapreduce.jobtracker.addres,而是要指定一种框架,这里选择yarn. 备注2:hadoop2.2.还支持第三方的计算框架,但没怎么关注过。
配置好以后将$HADOOP_HOME下的所有文件,包括hadoop目录分别copy到其它3个节点上。

 g) yarn-site.xml
   

    

        

        yarn.resourcemanager.address

        master:18040

    

    

        yarn.resourcemanager.scheduler.address

        master:18030

    

    

        yarn.resourcemanager.resource-tracker.address

        master:18025

    

    

            yarn.resourcemanager.admin.address

            master:18041

     

     

            yarn.resourcemanager.webapp.address

            master:8088

    

    

        yarn.nodemanager.local-dirs

        /usr/etc/hadoop/mynode/my

    

    

            yarn.nodemanager.log-dirs

            /usr/etc/hadoop/mynode/logs

    

    

            yarn.nodemanager.log.retain-seconds

            10800

      

        

            yarn.nodemanager.remote-app-log-dir

            /logs

        

        

            yarn.nodemanager.remote-app-log-dir-suffix

            logs

        

        

            yarn.log-aggregation.retain-seconds

            -1

        

        

            yarn.log-aggregation.retain-check-interval-seconds

            -1

        

        

            yarn.nodemanager.aux-services

            mapreduce_shuffle

        

    

  3) 将上述文件配置好后,将hadoop-2.2.0文件复制到其余datanode机器上的相同路径下。

scp -r /usr/etc/hadoop/hadoop-2.2.0 slave1:/usr/etc/hadoop

切换到root用户,修改/etc/profile文件 设置hadoop环境变量,

VMware虚拟机、centos6下安装部署hadoop2.2


    增加之后保存,设置生效:source /etc/profile


    最后两行特殊说明下,有的文章中遗漏掉这部分配置,最后在启动hadoop2.2时报了下面的错误
  

Hadoop 2.2.0 - warning: You have loaded library /home/hadoop/2.2.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard.


 

Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /home/hadoop/2.2.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c ', or link it with '-z noexecstack'.
localhost]
sed: -e expression #1, char 6: unknown option to `s'
HotSpot(TM): ssh: Could not resolve hostname HotSpot(TM): Name or service not known
64-Bit: ssh: Could not resolve hostname 64-Bit: Name or service not known
Java: ssh: Could not resolve hostname Java: Name or service not known
Server: ssh: Could not resolve hostname Server: Name or service not known
VM: ssh: Could not resolve hostname VM: Name or service not known

 配置完成之后需要重启电脑,所有datanode节点也需要对环境变量增加上面配置,配置完成之后重启电脑


6. hadoop的启动与关闭

   1)hadoop namenode的初始化,只需要第一次的时候初始化,之后就不需要了
       cd /usr/etc/hadoop/hadoop-2.2.0/bin
        hdfs namenode -format

   2)启动
       启动:在namenode机器上,进入/usr/etc/hadoop/hadoop-2.2.0/sbin
       执行脚本start-all.sh
   3) 关闭
       在namenode节点上,进入/usr/etc/hadoop/hadoop-2.2.0/sbin
      stop-all.sh

7. web接口地址

启动hadoop后,在主节点的浏览器中输入地址查看

http://master:50070

http://master:8088

http://master:19888(访问有问题,不知道为什么)

至此,hadoop平台的搭建全部结束。

=================================================================================

PS:配置文件里面的文件夹如果不存在不需要自己创建,会自动生成,已经过测试。

DataNode启动不了,可能是防火墙没关,也可能是需要编辑/etc/hosts,改成这样:

127.0.0.1 localhost

192.168.230.128 master

192.168.230.129 slave1

再重新启动就可以了。(用jps可能看不到slave1,但是http://master:50070可以看到slave1已经启动成功了

1 )datanode无法启动的问题,报错如下:

2013-06-08 17:57:27,519 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for block pool Block pool BP-770817654-172.17.50.119-1370685416301 (storage id DS-803461661-172.17.50.119-50010-1370681848198) service to localhost/127.0.0.1:9000
java.io.IOException: Incompatible clusterIDs in /usr/hadoop/tmp/dfs/data: namenode clusterID = CID-cd47cf1e-0f81-41b0-97df-7407db9f1fa5; datanode clusterID = CID-0462092f-2740-40a4-bf96-246be2efc49f
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:390)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:190)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:218)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:851)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:822)
at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:279)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:218)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:661)
at java.lang.Thread.run(Thread.java:619)

通过在网上查找资料得出:每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空tmp一下 的所有目录.

最后,删除/usr/hadoop/tmp下的所有内容即可。

2 )运行脚本的时候报out of memory

解决的方法是:修改配置文件hadoop-env.sh中的export HADOOP_CLIENT_OPTS="-Xmx1024m $HADOOP_CLIENT_OPTS"这个选项,把XMX改大就可以了。


=========================================================================

参考文章:http://blog.itpub.net/7483882/viewspace-1069062/

http://blog.csdn.net/dyllove98/article/details/9228673

http://blog.csdn.net/w13770269691/article/details/16883663


热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java连接字符串方法汇总
java连接字符串方法汇总

本专题整合了java连接字符串教程合集,阅读专题下面的文章了解更多详细操作。

3

2026.02.05

java中fail含义
java中fail含义

本专题整合了java中fail的含义、作用相关内容,阅读专题下面的文章了解更多详细内容。

6

2026.02.05

控制反转和依赖注入区别
控制反转和依赖注入区别

本专题整合了控制反转和依赖注入区别、解释、实现方法相关内容。阅读专题下面的文章了解更多详细教程。

6

2026.02.05

钉钉脑图插图教程合集
钉钉脑图插图教程合集

本专题整合了钉钉脑图怎么插入图片、钉钉脑图怎么用相关教程,阅读专题下面的文章了解更多详细内容。

8

2026.02.05

python截取字符串方法汇总
python截取字符串方法汇总

本专题整合了python截取字符串方法相关合集,阅读专题下面的文章了解更多详细内容。

2

2026.02.05

Java截取字符串方法合集
Java截取字符串方法合集

本专题整合了Java截取字符串方法汇总,阅读专题下面的文章了解更多详细操作教程。

1

2026.02.05

java 抽象方法
java 抽象方法

本专题整合了java抽象方法定义、作用教程等内容,阅读专题下面的文章了解更多详细内容。

2

2026.02.05

Eclipse创建jsp文件教程合集
Eclipse创建jsp文件教程合集

本专题整合了Eclipse创建jsp文件、创建jsp项目等等内容,阅读专题下面的文章了解更多详细教程。

18

2026.02.05

java 字符串转数字
java 字符串转数字

本专题整合了java如何字符串转数字相关内容,阅读专题下面的文章了解更多详细教程。

3

2026.02.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
c语言项目php解释器源码分析探索
c语言项目php解释器源码分析探索

共7课时 | 0.4万人学习

光速学会docker容器
光速学会docker容器

共33课时 | 2万人学习

PHP WEB 项目实战
PHP WEB 项目实战

共16课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号