`
A-one
  • 浏览: 816 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

搭建Hadoop环境

阅读更多

 

在单节点(伪分布式)环境下运行Hadoop

 

一、配置 SSH

 

无论是在单机环境还是多机环境中, Hadoop均采用SSH来访问各个节点的信息。在单机环境中,需要配置 SSH 来使用户 hadoop 能够访问 localhost 的信息。如果没有安装,首先需要安装ssh

 

  1. sudo apt-get install ssh

 

安装完成后要保证防火墙对ssh的端口放行,如果仅是学习可以直接把防火墙关闭:

 

1)重启后永久性生效:

 

开启: chkconfig iptables on

 

关闭: chkconfig iptables off

 

2)即时生效,重启后失效:

 

开启: service iptables start

 

关闭: service iptables stop

 

其次是配置 SSH使得Hadoop应用能够实现无密码登录:

 

  1. su - hadoop
  2. ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
  3. 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.xmlmapred-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/pidshadoop目录的下的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>

 

jobtrackerip和端口

 

三、运行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与系统的位数不合(jdk64位,系统为32位),换一个32位的jdk就可

 

启动单节点集群:

 

./start-all.sh

 

这个操作会在本机上启动Namenode,SecondaryNameNode,Datanode,JobTrackerTaskTracker共计5JVM进程,可以通过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文件

 

实验中两台机器处于同一局域网中,其中一台作为masterip地址为192.168.8.2一台作为slaveip地址为192.168.8.3。更新两台机器的/etc/hosts文件,使用如下命令:

 

vi /etc/hosts

 

添加以下内容:

 

  1. # /etc/hosts (for master AND slave)
  2. 192.168.8.2 master
  3. 192.168.8.3 slave

 

2) 设置节点之间的无密码SSH登录

 

这里要求master上的用户hadoop必须能够无密码登录到masterslave两台机器上。经过上面的配置,已经可以在单机上进行密码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将作为NameNodeDataNodeslave 作为DataNode;在MapReduce层,master将作为JobTrackerTaskTracker,而slave将作为 TaskTracker。值得一提的是,本次实验中master节点既作为管理节点,又担当数据节点。接下来需要修改$HADOOP_HOME/conf/下的配置文件。master节点上修改conf/masters文件,添加如下内容:

 

  1. master

 

master节点上修改conf/slaves文件,添加如下内容(这表明master节点具有双重角色,即做master,又做slave):

 

  1. master
  2. slave

 

如果需要添加更多slave,则可以在conf/slaves中将其他节点的名称添加进去,如下所示:

 

  1. master
  2. slave
  3. anotherslave01
  4. anotherslave02

 

在所有节点上修改conf/core-site.xml,更改fs.default.name的值为hdfs://master:9000,具体为:

 

  1. <property>
  2. <name>fs.default.name</name>
  3. <value>hdfs://master:9000</value>
  4. </property>

 

在所有节点上修改conf/mapred-site.xml,将JobTracker的地址改为master具体为:

 

  1. <property>
  2. <name>mapred.job.tracker</name>
  3. <value>hdfs://master:9001</value>
  4. </property>

 

在所有节点上修改conf/hdfs-site.xml,将更改dfs.replication的值,这个参数决定了集群中一个文件需要保存为多少个拷贝。其默认值为3,因本次试验节点数为2,故更改为2。具体为:

 

  1. <property>
  2. <name>dfs.replication</name>
  3. <value>2</value>
  4. </property>

 

4) 格式化HDFS

 

注意:如果之前单机环境下格式化过HDFS建议把之前的文件删除,否则可能会出现异常(HDFS目录即之前设置的${hadoop.tmp.dir}\dfs目录)。格式化命令和单机情况下类似,只是需要在master节点上运行。

 

  1. ./hadoop namenode -format

 

5) 启动和停止集群

 

master节点上首先启动HDFS,其命令为:

 

  1. ./start-dfs.sh

 

其结果是在master节点上启动NameNode,SecondaryNameNodeDataNode,在所有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 单机版搭建环境图文解析 Hadoop 是一种基于分布式计算的开源框架,由 Apache 基金会开发和维护。它主要由 HDFS(分布式文件系统)和 MapReduce(分布式计算框架)两部分组成。Hadoop 的主要特点是高可扩展性...

    VMware7.1虚拟机+Ubuntu12.04搭建hadoop环境记录

    小白搭建hadoop完全分布式环境笔记,步骤详细,原创

    linux搭建hadoop环境

    本文详细介绍了如何在Linux环境下搭建Hadoop环境,包括安装JDK、SSH以及配置Hadoop的核心文件等关键步骤。此外,还提供了一个简单的WordCount示例程序的操作流程。通过这些步骤,你可以成功地在Linux上搭建起一个...

    CDH搭建hadoop环境文档指南

    ### CDH搭建Hadoop环境知识点整理 #### CDH简介 CDH(Cloudera's Distribution Including Apache Hadoop)是Cloudera公司提供的一个发行版,包含了Apache Hadoop的核心组件以及许多额外的工具和增强功能。CDH旨在...

    云计算技术Zstack实践-搭建Hadoop环境.pptx

    在本实践教程中,我们将探讨如何利用云计算技术ZStack搭建Hadoop环境,这对于大数据处理和分析至关重要。Hadoop是一个开源的分布式计算框架,允许在廉价硬件上存储和处理大规模数据集。ZStack作为云计算平台,提供了...

    在ubuntu下搭建hadoop环境搭建__说明文档

    ### 在Ubuntu下搭建Hadoop环境的关键步骤 #### 1. 安装JDK 在Ubuntu系统上搭建Hadoop环境的第一步是安装Java Development Kit (JDK)。这是因为Hadoop是用Java编写的,所以需要JDK来运行Hadoop。 ##### 1.1 下载与...

    搭建hadoop环境.doc

    在本文中,我们将详细介绍如何在 CentOS 6.4 操作系统环境下搭建 Hadoop 2.5.0 全分布式环境。这是一个逐步过程,包括设置多台虚拟机、安装 JDK、配置 Hadoop 环境以及启动集群。 首先,我们需要准备三台能够无密码...

    hadoop环境搭建教程

    在本教程中,我们将详细介绍如何在Windows系统下搭建Hadoop环境,内容涉及虚拟机的安装、基础环境配置以及Hadoop集群的具体搭建步骤。适合初学者跟随本教程一步步进行操作。 首先,搭建Hadoop环境需要一台高性能...

    hadoop环境搭建

    Hadoop 环境搭建 Hadoop 环境搭建是大数据处理和分析的基础,涉及到虚拟机安装、操作系统安装、JDK 安装、SSH 无密码登录、Hadoop 安装等多个方面。在本文中,我们将详细介绍 Hadoop 环境搭建的步骤和方法。 一、...

    在windows上eclipse搭建hadoop环境

    成功在windows的eclipse连接hadoop 具体步骤如下: 1.使用对应版本的Hadoop jar包 ...因为是Hadoop2.6环境,所以后者覆盖前者 解决:创建HADOOP_HOME环境变量,值为解压目录 将 %HADOOP_HOME%/bin添加至Path下。

    hadoop环境搭建,机器部署以及 Linux 常用命令操作指南

    hadoop 环境搭建、机器部署以及 Linux 常用命令操作指南 本指南将指导用户从头开始搭建 Hadoop 环境,包括虚拟机环境的准备、Linux 基础知识、shell 增强大数据集群环境准备、ZooKeeper 介绍及集群操作网络编程等...

    esplise插件搭建Hadoop环境

    本篇将详细介绍如何利用Eclipse插件来搭建Hadoop开发环境。 首先,Eclipse插件的安装是关键步骤。你需要找到适用于Eclipse的Hadoop开发插件,如"Hadoop Toolkit"或"Big Data Tools"。这些插件通常可以从Eclipse ...

    win10下搭建Hadoop环境(jdk+mysql+hadoop+scala+hive+spark) 3.docx

    在Windows 10环境下搭建Hadoop生态系统,包括JDK、MySQL、Hadoop、Scala、Hive和Spark等组件,是一项繁琐但重要的任务,这将为你提供一个基础的大数据处理平台。下面将详细介绍每个组件的安装与配置过程。 **1. JDK...

    从零起步搭建Hadoop单机和伪分布式开发环境图文教程.

    王家林教授通过图文教程详细指导了如何从零开始搭建Hadoop环境,提供了极为详尽的操作步骤和解释,帮助初学者能够快速掌握搭建过程,并理解Hadoop的工作原理。此外,他强调了工欲善其事,必先利其器的理念,说明了在...

    hadoop (多节点)环境搭建

    Hadoop 多节点环境搭建 Hadoop 是一种分布式计算技术,能够处理大量数据。搭建 Hadoop 环境是学习和使用 Hadoop 的基础。本文将详细介绍如何搭建多节点 Hadoop 环境,包括安装 Ubuntu 操作系统、安装 Hadoop 软件、...

    hadoop环境搭建.docx

    在搭建Hadoop环境的过程中,有几个关键步骤需要详细解释。首先,我们需要配置IP地址,这是所有网络服务的基础。在CentOS7系统中,我们通常使用`ifconfig`命令查看网络接口,例如`ens33`。然后,使用`vim`编辑器打开`...

Global site tag (gtag.js) - Google Analytics