先说大方向的把握吧:
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完全分布式部署的过程,包括硬件和网络环境的准备、Java环境的安装、Hadoop的安装与配置以及Hive的集成等步骤。通过这些步骤,用户可以构建一个稳定可靠的Hadoop集群,为大数据处理提供坚实的...
### Hadoop完全分布式环境搭建详解 #### 一、前言 在大数据处理领域,Hadoop是一种广泛使用的开源框架,主要用于存储和处理大规模数据集。它包括HDFS(Hadoop Distributed File System)和MapReduce等核心组件。...
Hadoop完全分布式安装教程 本文档旨在指导用户完成Hadoop的完全分布式安装,涵盖了从虚拟机安装到Hadoop配置文件的详细步骤。本教程适合初学者和中级用户,旨在帮助他们快速掌握Hadoop的安装和配置。 一、Hadoop...
本文详细介绍了Hadoop完全分布式集群的搭建过程,包括环境准备、网络配置、JDK安装与配置、Hadoop安装与配置以及集群启动和验证等关键步骤。通过这些步骤,可以成功搭建一个功能完备的Hadoop分布式集群,为后续的大...
### Hadoop完全分布式集群搭建详解 #### 一、前言及环境准备 在开始搭建Hadoop完全分布式集群之前,需要确保已经准备好相应的硬件资源和软件环境。本篇指南旨在为初学者提供一个全面且详细的Hadoop集群搭建流程,...
部署全分布模式Hadoop集群 实验报告一、实验目的 1. 熟练掌握 Linux 基本...4. 获取和安装 Hadoop。 5. 配置全分布模式 Hadoop 集群。 6. 关闭防火墙。 7. 格式化文件系统。 8. 启动和验证 Hadoop。 9. 关闭 Hadoop。
"Hadoop完全分布式集群安装及配置" 本文档提供了Hadoop完全分布式集群的安装和配置步骤,包括三台虚拟机的配置、主机名的设置、hosts文件的配置、防火墙的关闭、NTP服务的安装和配置、免密码登录的配置、JDK的安装...
### 基于VM+CentOS+hadoop2.7搭建Hadoop完全分布式集群的知识点解析 #### 一、概述 本文旨在详细介绍如何使用VMware Workstation(简称VM)结合CentOS 6.5操作系统来搭建Hadoop 2.7的完全分布式集群。此文档是根据...
文章目录Hadoop完全分布式集群搭建一、新建虚拟机二、规划集群与服务1、逻辑结构2、物理结构3、总结构三、配置集群1、主节点基础网络配置1.1、配置固定ip地址1.2、修改主机名1.3、配置dns1.4、配置 ip 地址和主机名...
【Hadoop完全分布式环境】Hadoop是一个开源的分布式计算框架,特别设计用于处理和存储大规模数据集。它由Apache软件基金会维护,核心组件包括Hadoop Distributed File System (HDFS)和MapReduce。HDFS提供了高容错性...
### hadoop HA高可用性完全分布式集群安装 在大数据处理领域,Hadoop作为一个开源软件框架,主要用于分布式存储和处理大规模数据集。为了提高系统的稳定性和可靠性,Hadoop提供了高可用性(High Availability,简称...
下面是关于Hadoop2完全分布式集群搭建的知识点总结: 1. 前序 在搭建Hadoop2完全分布式集群之前,需要了解Hadoop2的基本概念和架构。Hadoop2由HDFS(分布式文件系统)、MapReduce(分布式计算框架)和YARN(资源...
### Hadoop 2.4 完全分布式环境安装与配置 #### 一、前置准备:Java环境搭建 在安装Hadoop之前,首先需要确保已经安装了Java环境,因为Hadoop是基于Java编写的。 1. **下载Java JDK** 从Oracle官方网站下载JDK ...
### Hadoop伪分布式模式配置与...这种模式虽然不是完全意义上的分布式,但它提供了足够的灵活性来测试和验证Hadoop的各种功能,同时也能够模拟出实际生产环境中的一些常见问题,对于学习和理解Hadoop是非常有帮助的。
总结来说,搭建一个完全分布式的Hadoop集群需要对Linux、Java和Hadoop的原理有深入的理解。这是一个涉及多步骤的过程,每一步都需要谨慎操作。通过这样的集群,企业可以处理PB级别的数据,实现高效的数据分析和挖掘...
### Hadoop完全分布式安装手册 #### 一、环境规划与准备 在进行Hadoop的完全分布式安装之前,首先需要对整个环境进行规划和必要的准备工作。根据文档提供的信息,本手册将涉及以下三个主要方面: 1. **JDK安装**...
### 完全分布式模式的Hadoop集群安装 #### 实验背景与目的 在现代大数据处理领域,Apache Hadoop因其强大的数据处理能力而受到广泛青睐。本文档旨在介绍如何在Linux环境下,利用三台虚拟机(一台主机两台从机)...
### Ubuntu上Hadoop完全分布式安装指南 #### 一、前言与环境准备 在本篇文章中,我们将详细介绍如何在Ubuntu环境下搭建Hadoop的完全分布式集群。对于初学者来说,掌握这一技能不仅能够帮助理解大数据处理的基本...
总结以上知识点,我们可以了解到在搭建一个Hadoop完全分布式集群前,需要做好充分的准备,包括硬件资源准备、操作系统环境配置、用户和服务器的规划以及SSH无密码登录的配置等。只有完成了这些前期准备工作,才能...