`

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完全分布式环境搭建详解 #### 一、前言 在大数据处理领域,Hadoop是一种广泛使用的开源框架,主要用于存储和处理大规模数据集。它包括HDFS(Hadoop Distributed File System)和MapReduce等核心组件。...

    Hadoop完全分布式安装教程

    Hadoop完全分布式安装教程 本文档旨在指导用户完成Hadoop的完全分布式安装,涵盖了从虚拟机安装到Hadoop配置文件的详细步骤。本教程适合初学者和中级用户,旨在帮助他们快速掌握Hadoop的安装和配置。 一、Hadoop...

    hadoop完全分布式集群搭建笔记

    本文详细介绍了Hadoop完全分布式集群的搭建过程,包括环境准备、网络配置、JDK安装与配置、Hadoop安装与配置以及集群启动和验证等关键步骤。通过这些步骤,可以成功搭建一个功能完备的Hadoop分布式集群,为后续的大...

    hadoop完全分布式集群搭建

    ### Hadoop完全分布式集群搭建详解 #### 一、前言及环境准备 在开始搭建Hadoop完全分布式集群之前,需要确保已经准备好相应的硬件资源和软件环境。本篇指南旨在为初学者提供一个全面且详细的Hadoop集群搭建流程,...

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

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

    Hadoop完全分布式集群安装及配置.docx

    "Hadoop完全分布式集群安装及配置" 本文档提供了Hadoop完全分布式集群的安装和配置步骤,包括三台虚拟机的配置、主机名的设置、hosts文件的配置、防火墙的关闭、NTP服务的安装和配置、免密码登录的配置、JDK的安装...

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

    ### 基于VM+CentOS+hadoop2.7搭建Hadoop完全分布式集群的知识点解析 #### 一、概述 本文旨在详细介绍如何使用VMware Workstation(简称VM)结合CentOS 6.5操作系统来搭建Hadoop 2.7的完全分布式集群。此文档是根据...

    Hadoop完全分布式集群总结

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

    基于OPENSTACK私有云平台上的HADOOP完全分布式环境应用研究.pdf

    【Hadoop完全分布式环境】Hadoop是一个开源的分布式计算框架,特别设计用于处理和存储大规模数据集。它由Apache软件基金会维护,核心组件包括Hadoop Distributed File System (HDFS)和MapReduce。HDFS提供了高容错性...

    hadoop HA高可用性完全分布式集群安装

    ### hadoop HA高可用性完全分布式集群安装 在大数据处理领域,Hadoop作为一个开源软件框架,主要用于分布式存储和处理大规模数据集。为了提高系统的稳定性和可靠性,Hadoop提供了高可用性(High Availability,简称...

    Hadoop2完全分布式集群搭建

    下面是关于Hadoop2完全分布式集群搭建的知识点总结: 1. 前序 在搭建Hadoop2完全分布式集群之前,需要了解Hadoop2的基本概念和架构。Hadoop2由HDFS(分布式文件系统)、MapReduce(分布式计算框架)和YARN(资源...

    hadoop的伪分布式模式配置与安装

    ### Hadoop伪分布式模式配置与...这种模式虽然不是完全意义上的分布式,但它提供了足够的灵活性来测试和验证Hadoop的各种功能,同时也能够模拟出实际生产环境中的一些常见问题,对于学习和理解Hadoop是非常有帮助的。

    Hadoop搭建完全分布式集群

    总结来说,搭建一个完全分布式的Hadoop集群需要对Linux、Java和Hadoop的原理有深入的理解。这是一个涉及多步骤的过程,每一步都需要谨慎操作。通过这样的集群,企业可以处理PB级别的数据,实现高效的数据分析和挖掘...

    hadoop完全安装手册

    ### Hadoop完全分布式安装手册 #### 一、环境规划与准备 在进行Hadoop的完全分布式安装之前,首先需要对整个环境进行规划和必要的准备工作。根据文档提供的信息,本手册将涉及以下三个主要方面: 1. **JDK安装**...

    完全分布式模式的Hadoop集群安装

    ### 完全分布式模式的Hadoop集群安装 #### 实验背景与目的 在现代大数据处理领域,Apache Hadoop因其强大的数据处理能力而受到广泛青睐。本文档旨在介绍如何在Linux环境下,利用三台虚拟机(一台主机两台从机)...

    ubuntu完全分布式安装文档

    ### Ubuntu上Hadoop完全分布式安装指南 #### 一、前言与环境准备 在本篇文章中,我们将详细介绍如何在Ubuntu环境下搭建Hadoop的完全分布式集群。对于初学者来说,掌握这一技能不仅能够帮助理解大数据处理的基本...

    3、大数据环境-安装Hadoop2.5.2完全分布式傻瓜教程(Virtual5+CentOS6.8).

    总结以上知识点,我们可以了解到在搭建一个Hadoop完全分布式集群前,需要做好充分的准备,包括硬件资源准备、操作系统环境配置、用户和服务器的规划以及SSH无密码登录的配置等。只有完成了这些前期准备工作,才能...

Global site tag (gtag.js) - Google Analytics