一、配置 SSH
无论是在单机环境还是多机环境中, Hadoop均采用SSH来访问各个节点的信息。在单机环境中,需要配置 SSH 来使用户 hadoop 能够访问 localhost 的信息。如果没有安装,首先需要安装ssh
- sudo apt-get install ssh
安装完成后要保证防火墙对ssh的端口放行,如果仅是学习可以直接把防火墙关闭:
1)重启后永久性生效:
开启: chkconfig iptables on
关闭: chkconfig iptables off
2)即时生效,重启后失效:
开启: service iptables start
关闭: service iptables stop
其次是配置 SSH使得Hadoop应用能够实现无密码登录:
- su - hadoop
- ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
- cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
第一条命令将当前用户切换为hadoop(如果当前用户就是hadoop,则无需输入),第二条命令将生成一个公钥和私钥对(即id_dsa和 id_dsa.pub两个文件,位于~/.ssh文件夹下),第三条命令使得hadoop用户能够无需输入密码通过SSH访问localhost。这时可 通过以下命令来验证安装是否成功(如果没有提示输入密码直接登录成功,则说明安装成功):
ssh localhost //若不需要密码ssh配置好
二、配置Hadoop
Hadoop的配置文件都放在${HADOOP_HOME}/conf这个文件夹下面,主要是四个配置文件,分别是core-site.xml,hadoop-env.sh,hdsf-site.xml和mapred-site.xml。
(1)修改conf/hadoop-env.sh,设置JAVA_HOME,在该文件中找到如下行,去掉前面的注释。
将
# Thejava implementation to use. Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
即使在环境变量里面已经配置了JAVA_HOME,这里也不可以用JAVA_HOME=${JAVA_HOME},一定要写成绝对路径
修改为:
# Thejava implementation to use. Required.
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_27
接着修改HADOOP_PID_DIR的值,将
# The directory where pid files are stored. /tmp by default.
# export HADOOP_PID_DIR=/var/hadoop/pids
改为:
# The directory where pid files are stored. /tmp by default.
export HADOOP_PID_DIR=/opt/hadoop-0.20.2/pids(hadoop目录的下的pids文件夹)
这个值主要是用来存放HADOOP进程的pid文件,由于linux会定时清理/tmp下的文件,所以用默认值的话可能会导致找不到pid文件,使得hadoop进程无法正常运行
(2)修改core-site.xml内容如下:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<!-- Put site-specific property overrides in thisfile. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
<!--默认的namenode的端口为8020 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/program/tmp-${user.name}</value>
<!--路径中可以使用用${变量名},但路径名不可以用${...}以及~/...,一定要写成绝对路径-->
</property>
</configuration>
(3)修改conf/hdfs-site.xml为
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
设置复本数,默认是3
(4)修改conf/mapred-site.xml为:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
jobtracker的ip和端口
三、运行Hadoop(当前用户为hadoop)
以上操作已经完成对Hadoop的配置,接下来是运行Hadoop。第一步需要进行格式化HDFS,运行脚本主要位于${HADOOP_HOME}/bin目录 下,注意HADOOP_HOME为解压缩之后的Hadoop根目录,此处为/home/hadoop/program/hadoop-0.20.1。格式 化HDFS命令为:(假设当前目录是已经在${HADOOP_HOME}/bin/)下
./hadoop namenode –format
若报
/opt/jdk1.6.0_25/bin/java: cannot execute binary file
证明jdk与系统的位数不合(jdk为64位,系统为32位),换一个32位的jdk就可
启动单节点集群:
./start-all.sh
这个操作会在本机上启动Namenode,SecondaryNameNode,Datanode,JobTracker和TaskTracker共计5个JVM进程,可以通过java自带的jps命令查看。
jps
通过jps命令可以查看到进程如下:
TaskTracker
SecondaryNameNode
JobTracker
NameNode
TaskTracker
停止单节点集群:
./stop-all.sh
另外可以通过以下网址查看节点的运行情况:
http://localhost:50030/ - Hadoop 管理介面
http://localhost:50060/ - Hadoop Task Tracker 状态
http://localhost:50070/ - Hadoop DFS 状态
四、在多节点(分布式)环境下运行Hadoop
搭建多节点集群的思想主要是在每一台机器上分别搭建好单机环境,再将几台机器整合成一个集群。因此,在此之前,请确保每一台机器都如前所述搭建好了单机环境,最好是相同的结构。这里说的相同结构是指hadoop安装在相同的目录下,然后多个节点都使用相同的用户名操作hadoop集群。否则在ssh的时候也会出现问题。
(1) 设置/etc/hosts文件
实验中两台机器处于同一局域网中,其中一台作为master,ip地址为192.168.8.2一台作为slave,ip地址为192.168.8.3。更新两台机器的/etc/hosts文件,使用如下命令:
vi /etc/hosts
添加以下内容:
- # /etc/hosts (for master AND slave)
- 192.168.8.2 master
- 192.168.8.3 slave
(2) 设置节点之间的无密码SSH登录
这里要求master上的用户hadoop必须能够无密码登录到master和slave两台机器上。经过上面的配置,已经可以在单机上进行密码SSH登录,这里只需设置由master无密码登录到slave,采用如下命令即可:
在master上运行:
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@slave
如果没有ssh-copy-id,使用如下命令代替:
cat ~/.ssh/id_dsa.pub | ssh hadoop@slave "umask 077; mkdir -p .ssh ; cat >> .ssh/authorized_keys" , umask 077是要保证.ssh目录为drwx------,即保证只有所有者有权限,否则不管用
这条命令的意思是将master上的公钥拷贝到slave上,这样下次ssh slave的时候slave就认识master,无需在输入密码验证。
如下命令可以测试SSH连接成功与否:
ssh master
ssh slave
(3) 修改集群配置文件
hadoop集群的架构分为两层:HDFS层和MapReduce层,在HDFS层,master将作为NameNode和DataNode,slave 作为DataNode;在MapReduce层,master将作为JobTracker和TaskTracker,而slave将作为 TaskTracker。值得一提的是,本次实验中master节点既作为管理节点,又担当数据节点。接下来需要修改$HADOOP_HOME/conf/下的配置文件。在master节点上修改conf/masters文件,添加如下内容:
- master
在master节点上修改conf/slaves文件,添加如下内容(这表明master节点具有双重角色,即做master,又做slave):
- master
- slave
如果需要添加更多slave,则可以在conf/slaves中将其他节点的名称添加进去,如下所示:
- master
- slave
- anotherslave01
- anotherslave02
在所有节点上修改conf/core-site.xml,更改fs.default.name的值为hdfs://master:9000,具体为:
- <property>
- <name>fs.default.name</name>
- <value>hdfs://master:9000</value>
- </property>
在所有节点上修改conf/mapred-site.xml,将JobTracker的地址改为master具体为:
- <property>
- <name>mapred.job.tracker</name>
- <value>hdfs://master:9001</value>
- </property>
在所有节点上修改conf/hdfs-site.xml,将更改dfs.replication的值,这个参数决定了集群中一个文件需要保存为多少个拷贝。其默认值为3,因本次试验节点数为2,故更改为2。具体为:
- <property>
- <name>dfs.replication</name>
- <value>2</value>
- </property>
(4) 格式化HDFS
注意:如果之前单机环境下格式化过HDFS建议把之前的文件删除,否则可能会出现异常(HDFS目录即之前设置的${hadoop.tmp.dir}\dfs目录)。格式化命令和单机情况下类似,只是需要在master节点上运行。
- ./hadoop namenode -format
(5) 启动和停止集群
在master节点上首先启动HDFS,其命令为:
- ./start-dfs.sh
其结果是在master节点上启动NameNode,SecondaryNameNode和DataNode,在所有slave节点上启动DataNode,通过jps命令可以查看master上启动的服务列表:
NameNode
DataNode
SecondaryNameNode
此时slave上的进程列表如下:
DataNode
其次,在master节点上启动MapReduce,其命令为:
./start-mapred.sh
这样将会在master 节点上启动JobTracker 和TaskTracker , 在所有slave 节点上启动TaskTracker,通过jps命令可以查看master上启动的服务列表:
NameNode
DataNode
SecondaryNameNode
TaskTracker
JobTracker
此时slave上的进程列表如下:
DataNode
TaskTracker
如要停止集群,则需要将上述步骤反过来运行,首先在master上运行
./stop-mapred.sh
其次在master上运行以下命令停止HDFS:
./stop-dfs.sh
这个过程也可通过jps命令来查看是否完成。
相关推荐
Hadoop 单机版搭建环境图文解析 Hadoop 是一种基于分布式计算的开源框架,由 Apache 基金会开发和维护。它主要由 HDFS(分布式文件系统)和 MapReduce(分布式计算框架)两部分组成。Hadoop 的主要特点是高可扩展性...
小白搭建hadoop完全分布式环境笔记,步骤详细,原创
本文详细介绍了如何在Linux环境下搭建Hadoop环境,包括安装JDK、SSH以及配置Hadoop的核心文件等关键步骤。此外,还提供了一个简单的WordCount示例程序的操作流程。通过这些步骤,你可以成功地在Linux上搭建起一个...
### CDH搭建Hadoop环境知识点整理 #### CDH简介 CDH(Cloudera's Distribution Including Apache Hadoop)是Cloudera公司提供的一个发行版,包含了Apache Hadoop的核心组件以及许多额外的工具和增强功能。CDH旨在...
在本实践教程中,我们将探讨如何利用云计算技术ZStack搭建Hadoop环境,这对于大数据处理和分析至关重要。Hadoop是一个开源的分布式计算框架,允许在廉价硬件上存储和处理大规模数据集。ZStack作为云计算平台,提供了...
### 在Ubuntu下搭建Hadoop环境的关键步骤 #### 1. 安装JDK 在Ubuntu系统上搭建Hadoop环境的第一步是安装Java Development Kit (JDK)。这是因为Hadoop是用Java编写的,所以需要JDK来运行Hadoop。 ##### 1.1 下载与...
在本文中,我们将详细介绍如何在 CentOS 6.4 操作系统环境下搭建 Hadoop 2.5.0 全分布式环境。这是一个逐步过程,包括设置多台虚拟机、安装 JDK、配置 Hadoop 环境以及启动集群。 首先,我们需要准备三台能够无密码...
在本教程中,我们将详细介绍如何在Windows系统下搭建Hadoop环境,内容涉及虚拟机的安装、基础环境配置以及Hadoop集群的具体搭建步骤。适合初学者跟随本教程一步步进行操作。 首先,搭建Hadoop环境需要一台高性能...
Hadoop 环境搭建 Hadoop 环境搭建是大数据处理和分析的基础,涉及到虚拟机安装、操作系统安装、JDK 安装、SSH 无密码登录、Hadoop 安装等多个方面。在本文中,我们将详细介绍 Hadoop 环境搭建的步骤和方法。 一、...
成功在windows的eclipse连接hadoop 具体步骤如下: 1.使用对应版本的Hadoop jar包 ...因为是Hadoop2.6环境,所以后者覆盖前者 解决:创建HADOOP_HOME环境变量,值为解压目录 将 %HADOOP_HOME%/bin添加至Path下。
hadoop 环境搭建、机器部署以及 Linux 常用命令操作指南 本指南将指导用户从头开始搭建 Hadoop 环境,包括虚拟机环境的准备、Linux 基础知识、shell 增强大数据集群环境准备、ZooKeeper 介绍及集群操作网络编程等...
本篇将详细介绍如何利用Eclipse插件来搭建Hadoop开发环境。 首先,Eclipse插件的安装是关键步骤。你需要找到适用于Eclipse的Hadoop开发插件,如"Hadoop Toolkit"或"Big Data Tools"。这些插件通常可以从Eclipse ...
在Windows 10环境下搭建Hadoop生态系统,包括JDK、MySQL、Hadoop、Scala、Hive和Spark等组件,是一项繁琐但重要的任务,这将为你提供一个基础的大数据处理平台。下面将详细介绍每个组件的安装与配置过程。 **1. JDK...
王家林教授通过图文教程详细指导了如何从零开始搭建Hadoop环境,提供了极为详尽的操作步骤和解释,帮助初学者能够快速掌握搭建过程,并理解Hadoop的工作原理。此外,他强调了工欲善其事,必先利其器的理念,说明了在...
Hadoop 多节点环境搭建 Hadoop 是一种分布式计算技术,能够处理大量数据。搭建 Hadoop 环境是学习和使用 Hadoop 的基础。本文将详细介绍如何搭建多节点 Hadoop 环境,包括安装 Ubuntu 操作系统、安装 Hadoop 软件、...
在搭建Hadoop环境的过程中,有几个关键步骤需要详细解释。首先,我们需要配置IP地址,这是所有网络服务的基础。在CentOS7系统中,我们通常使用`ifconfig`命令查看网络接口,例如`ens33`。然后,使用`vim`编辑器打开`...