`

hadoop完全分布式安装总结

阅读更多

先说大方向的把握吧:

1.先在一台机器上把所有的配置文件都改好,然后再用scp命令,传到其他机器上,以此构成集群。不要每个机器上面改,麻烦不说,还很容易漏改或者错改。

2.必须确保namenode可以无密码ssh到datanode,datanode也可以无密码ssh到namenode。这是集群间通信和hadoop集群正常运行的基础。

3.不要小瞧了/etc/hosts配置文件中的内容,安装不成功,毛病大多出在机器的hostname和/etc/hosts中的内容不一致,或者slaves,master配置文件中的对应主机名与前面二者不一致。slaves的ip要出现在master的/etc/hosts中,同样master的ip也要出现在slaves的/etc/hosts文件中。

4.防火墙要关闭。对应错误:java.net.NoRouteToHostException: No route to host

    解决办法关闭防火墙/etc/init.d/iptables stop

5.主机名不可以带下划线,否则报错。

6.jdk的安装目录要一致!

 

具体安装过程:(redhat环境,共6台机器,一台namenode,五台datanode)

一.安装jdk:从oracle官网下载jdk,hadoop要求jdk版本必须是1.6.0以上。所以要注意版本的问题。我在用wget下载东西的时候,总是超时错误,由于是ssh登陆的server,所以又没办法通过浏览器下载,无奈只好先下载到本地,然后通过SecureCRT上传到server上面。

SecureCRT在登陆控制台界面按下Alt+p,可以开启sftp模式。提示符为sfte>,在后面输入help,可以查看可用的命令。lls为查看本地目录,(这个目录是提前配置好的,可以在选项-会话选项-X/Y/Zmodern,在右边的栏中指定上传和下载目录,最好这两个目录都设定为全英文的,防止中文乱码带来的错误)。

在help下面的命令提示,put是上传命令,上传参数可以选择-a(代表ascii)或者-b(binary)模式,这里应该选择-b参数,否则用-a的话,在后续安装的过程中会报一大堆错误。

上传jdk:sftp>put -a jdk-7u21-linux-x64.rpm

安装jdk:rpm -ivh jdk-7u21-linux-x64.rpm

配置环境变量:(http://blog.csdn.net/xinxin19881112/article/details/6114390)

#java path

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

export PATH=$JAVA_HOME/bin:$PATH

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

此外,hadoop要求集群中所有机器上面的jdk安装目录要一致!!!

 

二.安装hadoop:

1.先用同样的方式,将下载到本地的hadoop安装包以-b形式上传到server。然后解压缩到提前建好的hadoop目录下。

put -b hadoop-1.1.2.tar.gz

 

mkdir hadoop

tar -zxvf hadoop-1.1.2.tar.gz -C /root/hadoop/

 

2.规划hostname,/etc/hosts文件,以及/root/hadoop/hadoop-1.1.2/conf/目录下的masters,slaves文件,这几个文件对应的内容要一致。否则安装不成功。

hostname是对应的主机名,如果你以前给主机起的名字中包含了下划线_,那么一定要记得去掉下划线,否则在运行job的时候会出错。如果你给主机起的名字没有下划线,则没有必要非得重新给他改名字。但必须保证在masters和slaves中的主机名是有效的,有迹可循的。通常在安装的时候,为了方便说明,常常将namenode所在主机名起名为master,datanode所在的机器名字为slaveX。但这都不是必须的。

/etc/hosts文件中保存的是ip地址和主机名的一个对应关系:

127.0.0.1               localhost

218.241.108.64          master

218.241.108.65          slave1

218.241.108.66          slave2

218.241.108.67          slave3

218.241.108.74          slave4

218.241.108.75          slave5

为了能够让namenode和datanode之间可以正常通信,hadoop集群中的所有节点上,每个/etc/hosts文件都要包含有整个集群的信息。这样是为了能够正常解析主机名。

masters配置文件中存放担当master角色(也就是namenode)的机器的主机名。

slaves配置文件中存放担当slave角色(也就是datanode)的机器的主机名。

修改主机名:hostname master --将hostname改为master;

为保证/etc/hosts文件的一致,可用scp命令将一个修改好的hosts文件复制到其他机器上去。不易出错,而且高效:

scp  /etc/hosts  slave1:/etc/hosts 

masters和slaves的一致性,可以在将hadoop配置好后,进行整体scp 传输。

 

3.修改conf/core-site.xml;conf/hdfs-site.xml;conf/mapred-site.xml;conf/masters;conf/slaves配置文件:

conf/core-site.xml:

<configuration>

    <property>

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

        <value>hdfs://master:9000</value>   #这里的master是hostname

    </property>

 

    <property>

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

        <value>/root/hadoop/hadoop-1.1.2/hadoop-administrator</value>  

    </property>

 

</configuration>

 

conf/hdfs-site.xml:

<configuration>

        <property>

                <name>dfs.replication</name>

                <value>3</value>

        </property>

 

        <property>

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

                <value>/root/hadoop/hadoop-1.1.2/hadoop-administrator/dfs/name</value>

        </property>

 

        <property>

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

                <value>/root/hadoop/hadoop-1.1.2/hadoop-administrator/dfs/data</value>

        </property>

 

</configuration>

 

conf/mapred-site.xml:

<configuration>

        <property>

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

                <value>master:9001</value>

        </property>

</configuration>

conf/masters:

master

 

conf/slaves:

slave1

slave2

slave3

slave4

slave5

至此,所有的配置文件更改完毕。

 

4.设置namenode和datanode之间无密码ssh:

4.1 Namenode无密码ssh登录到Datanode:

所有节点上执行以下命令: 

root@master# ssh-keygen    

然后一路回车就可以了。这将在/root/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。

然后把namenode节点上面的id_rsa.pub 复制到所有datanode节点/root/.ssh/位置。

root@master# cp id_rsa.pub authorized_keys

root@master# chmod 644 authorized_keys

(注意:这是指把id_rsa.pub先拷贝成authorized_keys,再将authorized_keys复制到其它datanode上的)

root@master# scp authorized_keys slave1:/home/.ssh

使用SCP协议将namenode的公钥信息authorized_keys复制到所有DataNode的.ssh目录下,

这样配置过后,namenode可以无密码登录所有datanode,可以通过命令“ssh 节点ip地址”来验证。

 

4.2 Datanode无密码ssh登录到Namenode :

将各个datanode上的id_rsa.pub追加到namenode的authorized_keys:

在所有datanode上依次执行如下命令:

root@master# scp id_rsa.pub master:/root/.ssh/datanode_ip地址.id_rsa.pub

这里是将datanode上之前产生的公钥id_rsa.pub复制到namenode上的.ssh目录中,并重命名为datanode ip地址.id_rsa.pub,这是为了区分从各个datanode上传过来的公钥。

复制完毕,在namenode上执行以下命令,将每个datanode的公钥信息追加:

root@master# cat datanode ip地址.id_rsa.pub >> authorized_keys

这样,namenode和datanode之间便可以相互ssh上并不需要密码。至此,namenode能无密码验证登陆每个datanode。每个datanode也能无密码验证SSH登陆到namenode。

 

5.用scp命令,将配置好的hadoop,传递到其他各节点上:

scp -r  /root/hadoop/  slave1:/root/hadoop/

scp -r  /root/hadoop/  slave2:/root/hadoop/

... ... 

配置完成。

 

三.验证安装hadoop成功与否,并运行测试用例。

1.在运行hadoop之前,先需要格式化文件系统:hadoop namenode –format

2.启动所有进程:start-all.sh

在完成上面这两步之后,在namenode上面输入jps,会显示namenode上运行的进程(正常运行的话namenode上应该是3个进程):

30570 NameNode

30757 SecondaryNameNode

30843 JobTracker

在datanode上面输入jps会显示datanode上面运行的进程,正常的话应该为3个:

22866 DataNode

22974 TaskTracker

如果能显示这些,则表明hadoop已经正常启动。

 

3.查看集群运行状态:

hadoop dfsadmin -report

该命令的输出结果将显示集群的详细配置信息。

若能看到Live Datanodes个数及其详细信息,表明JobTracker已经顺利启动。

 

4.运行hadoop自带的wordcount程序,该程序完成统计单词出现次数。

 

先建立一个test目录。

$ cd hadoop-0.20.2

$ mkdir test

$ cd test 

 

#在 test目录下创建两个文本文件, WordCount 程序将统计其中各个单词出现次数 

$ echo "hello world, bye , world." >file1.txt 

$ echo "hello hadoop, goodbye , hadoop" >file2.txt

$ cd ..

 

#将本地文件系统上的./test-txt目录拷到 HDFS 的根目录上,目录名改为 input

$ bin/hadoop fs -put test input

 

 

#执行例子中的WordCount

$ bin/hadoop jar hadoop-examples-1.1.2.jar wordcount input output 

 

 

#查看执行结果:

 

#将文件从 HDFS 拷到本地文件系统中再查看:  

$ bin/hadoop dfs -get output output

$ cat output/* 

 

#也可以直接查看  

$ bin/hadoop dfs -cat output/*

 

#停止hadoop进程 

$ bin/stop-all.sh 

 

#关闭SSH-Server 

sudo /etc/init.d/ssh stop

 

hadoop fs 后面直接回车可以查看fs相关的命令

 

5.hadoop是在bin目录下的可执行文件,每次输入的时候都要输入bin/hadoop 太麻烦,可以将hadoop的路径追加到profile文件中,这样在以后只需输入hadoop即可。追加内容方法如下:

 

#java path

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

export PATH=$JAVA_HOME/bin:$PATH

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

#hadoop path

export HADOOP_HOME=/root/hadoop/hadoop-1.1.2

export HADOOP_CONF_DIR=/root/hadoop/hadoop-1.1.2/conf

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

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

 

6.错误原因的排查:

看NameNode为什么没起来,要看这个文件的内容: /home/hadoop-1.1.2/logs/hadoop-root-namenode-....log

看DataNode为什么没起来,要看这个文件的内容: /home/hadoop-1.1.2/logs/hadoop-root-datanode-....log

看Mapred为什么没起来,要看这个文件的内容:   /home/hadoop-1.1.2/logs/hadoop-root-jobtracker...log

 

分享到:
评论

相关推荐

    部署全分布模式Hadoop集群 实验报告

    部署全分布模式Hadoop集群 实验报告一、实验目的 1. 熟练掌握 Linux 基本...4. 获取和安装 Hadoop。 5. 配置全分布模式 Hadoop 集群。 6. 关闭防火墙。 7. 格式化文件系统。 8. 启动和验证 Hadoop。 9. 关闭 Hadoop。

    VM+CentOS+hadoop2.7搭建hadoop完全分布式集群

    VM+CentOS+hadoop2.7搭建hadoop完全分布式集群,自己实际实用过程的总结

    Hadoop完全分布式集群总结

    文章目录Hadoop完全分布式集群搭建一、新建虚拟机二、规划集群与服务1、逻辑结构2、物理结构3、总结构三、配置集群1、主节点基础网络配置1.1、配置固定ip地址1.2、修改主机名1.3、配置dns1.4、配置 ip 地址和主机名...

    Hadoop系统完全分布式集群搭建方法

    完全基于自己总结的hadoop完全分布式集群配置文档 hadoop完全分布式集群搭建笔记

    【Hadoop离线基础总结】完全分布式环境搭建

    完全分布式环境搭建 服务规划 适用于工作当中正式环境搭建 安装步骤 第一步:安装包解压 停止之前的Hadoop集群的所有服务,并删除所有机器的Hadoop安装包,然后重新解压Hadoop压缩包 三台机器都执行 rm -rf /...

    hadoop云资源与安装

    hadoop2.2+hbase0.96+hive0.12安装整合详细高可靠文档及经验总结 - 文档hadoop2.4插件下载、完全分布式、伪分布、eclipse插件开发文档hadoop2完全分布式最新高可靠安装文档及整合hbase0.96安装从零教你在Linux环境下...

    hadoop2.6.5+Ubuntu16.04配置指南

    装了很多墙,走了很多坑,总结的Hadoop完全分布式环境配置过程。已经是最简单的版本。

    新版Hadoop视频教程 段海涛老师Hadoop八天完全攻克Hadoop视频教程 Hadoop开发

    第一天 hadoop的基本概念 伪分布式hadoop集群安装 hdfs mapreduce 演示 01-hadoop职位需求状况.avi 02-hadoop课程安排.avi 03-hadoop应用场景.avi 04-hadoop对海量数据处理的解决思路.avi 05-hadoop版本选择和...

    完全分布式hadoop平台系统搭建实验报告

    实验报告:步骤+总结

    Hadoop搭建及MR编程-实验报告

    一、实验目的 1. 了解熟悉linux命令。 2. 学习hadoop的安装和配置。 3. 学习编写基础的MR代码。...1. 建立hadoop 完全分布式模式。 2. 上传数据并且对数据进行查询。 3. 通过安装Hadoop了解Hadoop的原理

    大数据培训视频.rar

    027完全分布式引入mp4 028高可用及如何进行切换mp4 029kfc工作原理mp4 030 amenodeHA数据交换方法,mp4 031HA总结mp4 032部署规划mp4 33拟机准备mp4 034虚找机环境准备mp4 035jdk部署mp4 036 zookeeper部署mp4 037 ...

    Linux下Hadoop配置和使用

    在完全分布式的环境下在Cent-OS中配置Hadoop-0.19.1时的总结文档,该版本也适合其他版本Linux系统和目前各版本的Hadoop

    ubantu安装hadoop指导文档.docx

    ubantu(乌班图)安装hadoop三种模式,描述非常详细,非常适合学习大数据技术的环境准备。包括环境规划,环境配置,安装步骤等。本人反复测试过好几次,总结完成,希望对大家有所帮助。

    IT十八掌课程-徐培成-大数据-配套PPT

    '[IT18掌www.it18zhang.com]011.Hadoop配置-完全分布式模式.pptx' '[IT18掌www.it18zhang.com]Avro.pptx' '[IT18掌www.it18zhang.com]ZooKeeper.pptx' '[IT18掌www.it18zhang.com]012.Hadoop Windows下免Cygwin伪...

    Linux下Nutch分布式配置和使用.rar

    这是本人在完全分布式环境下在Cent-OS中配置Nutch-1.1时的总结文档,但该文档适合所有Linux系统和目前各版本的nutch。 目 录 介绍 ............................................................... 2 0 集群...

    云计算读书报告.docx

    云计算相关的主要有虚拟化技术,SaaS服务模式,分布式文件系统,非关系型数据库,MapReduce编程模型,hadoop架构。其主要代表作品有Google的云计算产品和技术,Microsoft云+端技术,以及各种SaaS软件应用实例,下面...

Global site tag (gtag.js) - Google Analytics