1引言

hadoop如今已经成为大数据处理中不可缺少的关键技术,在如今大数据爆炸的时代,hadoop给我们处理海量数据提供了强有力的技术支撑。因此,了解hadoop的原理与应用方法是必要的技术知识。

hadoop的基础原理可参考如下的三篇论文:

  1. The Google File System, 2003
  2. MapReduce: Simplified Data Processing on Large Clusters, 2004
  3. Bigtable: A Distributed Storage System for Structured Data

2 hadoop在WMware虚拟机上的配置

2.1 准备工作

2.1.1 软件整理

首先,我们需要先确定好配置hadoop所需的所有软件工具,它们分别是:

2.1.2 思路整理

由于hadoop的配置不像其他某些库或者包那样简单,因此,有必要在实际展开配置之前梳理一下整体hadoop的配置思路。

  1. 在虚拟机中安装一台CentOS系统;
  2. 主机名、ip、hosts、防火墙等基础配置;
  3. 配置jdk;
  4. 克隆虚拟机,得到三台相同机器,并修改各自的基础配置信息;
  5. 配置hadoop;
  6. 配置ssh免密码登录;
  7. hadoop初始准备工作;
  8. 运行hadoop

2.2 Hadoop的配置过程

2.2.1 安装CentOS虚拟机

这里不做详细的虚拟机安装介绍,网上可查到很多相关资料。需要注意的有几点:

  • 虚拟机的内存设置最好大于512MB,否则无法开启GUI,我这里设定的是1024MB
  • 虚拟机网络模式设置为桥接模式,并设定主机上的 VMnet8 的 IP 地址与子网掩码,我这里分别设置为 192.168.66.1 和 255.255.255.0

2.2.2 主机名、ip、防火墙的配置

  • 主机名

当前的主机名可通过 hostname 命令进行查看,为了后续多台机器名称的统一,在此笔者将第一台主机设置为 node1,以后克隆的主机可依次命名为 node2, node3, node4 ... 主机名的配置文件位于 /etc/sysconfig/network 文件中,打开该文件,更改为如下内容:

  1. NETWORKING=yes
  2. HOSTNAME=node1

同时,可预先设置主机名与IP的映射关系,修改 /etc/hosts 文件为如下内容:

  1. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  2. 192.168.66.100 node1
  3. 192.168.66.101 node2
  4. 192.168.66.102 node3
  5. 192.168.66.103 node4
  6. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

这里我们预先将其余的几个节点的ip地址设定到hosts文件中,以便后续可直接通过名称访问。

  • IP设置

我们需要将此台机器的IP设定为静态的,且与我们最开始在主机的VMnet8上设置的IP在同一个网段内,此处笔者设置的为 IP号:192.168.66.100,子网掩码:255.255.255.0,网关:192.168.66.1(该IP为NameNode使用,后续的多个DataNode分别设置为: .101; .102; .103...)。修改方法可直接在系统可视化界面的右上角点击网络设置进行交互式设定,或直接对配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0 进行修改,修改内容如下:

  1. DEVICE="eth0"
  2. BOOTPROTO=static
  3. NM_CONTROLLED="yes"
  4. ONBOOT="yes"
  5. TYPE="Ethernet"
  6. UUID="797cd6db-9499-4d45-85e8-b3e841bbcad5"
  7. IPADDR=192.168.66.100
  8. PREFIX=24
  9. GATEWAY=192.168.66.1
  10. DEFROUTE=yes
  11. IPV4_FAILURE_FATAL=yes
  12. IPV6INIT=no
  13. NAME="System eth0"
  14. HWADDR=00:0C:29:44:24:87
  15. LAST_CONNECT=1500978980
  • 防火墙

为了今后各节点之间通信不会受到防火墙的限制,暂且先将防火墙关闭,相关命令如下:

  1. service iptables status # 查看当前防火墙的状态
  2. service iptables stop # 关闭防火墙
  3. service iptables start # 开启防火墙

最后可测试一下从Windows主机上是否能够与Linux虚拟机通信,可直接在主机的控制台输入 ping 192.168.66.100,查看结果。

2.2.3 配置JDK

关于jdk的安装配置网上教程很多,这里简单做一下介绍,笔者将下载后的 jdk-7u40-linux-x64.tar.gz 文件解压,并放置在/opt/dev/java/目录下(*笔者的开发包目录统一设定为 /opt/dev/ 目录下).

  1. // 解压与移动代码:
  2. tar -zxvf 文件名
  3. mv 解压后的文件名 jdk
  4. mv jdk /opt/dev/java/

接下来进行java环境变量的配置,打开 /etc/profile 配置文件,该文件是专门用来管理系统环境变量,配置之后对所有的用户均有效。

  1. // 在文件末尾追加以下内容:
  2. #set java environment
  3. export JAVA_HOME=/opt/dev/java/jdk
  4. export CLASSPATH=".:$JAVA_HOME/lib:$CLASSPATH"
  5. export PATH="$JAVA_HOME/bin:$PATH"

保存退出之后,可用 source /etc/profile 来重新加载配置文件,但由于该种操作存在弊端,因此可以通过 logout 命令重新登录较为稳妥。

最后可在控制台中输入 java -version 来检查是否配置成功。配置成功后可看到如下信息:

  1. java version "1.7.0_40"
  2. Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
  3. Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)

2.2.4 克隆多台主机

该步骤较为简单,直接通过VMware自带的克隆功能进行克隆即可(需选择完全克隆)。此处笔者克隆了另外两台,分别设置名为 node2 和 node3,并设定了相应的IP地址。

2.2.5 配置hadoop

到了最关键的hadoop配置,首先将下载的 hadoop-1.2.1-bin.tar.gz 文件进行解压,同样放置在 /opt/dev/hadoop 目录下。接下来开始分别对几个关键的配置文件进行修改。

  • 配置hadoop-env.sh

打开hadoop-env.sh文件,找到JAVA_HOME关键字所在的行,去掉最前面的#号,然后修改成本机的JAVA_HOME地址:

  1. export JAVA_HOME=/opt/dev/java/jdk
  • 配置core-site.xml

打开hadoop目录中的conf文件夹,打开其中的core-site.xml文件,在其中的configuration标签中加入以下内容:

  1. <!—fs.default.name:用来配置namenode,指定HDFS文件系统的URL,通过该URL我们可以访问文件系统的内容,也可以把localhost换成本机IP地址;如果是完全分布模式,则必须把localhost改为实际namenode机器的IP地址;如果不写端口,则使用默认端口8020。 -->
  2. <property>
  3. <name>fs.default.name</name>
  4. <value>hdfs://node1:9000</value>
  5. </propety>
  6. <!-- hadoop.tmp.dir:Hadoop的默认临时路径,这个最好需要配置一下,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。该目录必须预先手工创建。-->
  7. <property>
  8. <name>hadoop.tmp.dir</name>
  9. <value>/opt/data/hadoop-1.2.1/</value>
  10. </property>
  • 配置hdfs-site.xml

打开hdfs-site.xml文件,修改内容如下:

  1. <!—用来设置文件系统冗余备份数量,因为只有2个节点,所以设置为2,系统默认数量为3-->
  2. <configuration>
  3. <property>
  4. <name>dfs.replication</name>
  5. <value>2</value>
  6. </property>
  7. </configuration>
  • 配置mapred-site.xml

在该文件中的修改内容如下:

  1. <configuration>
  2. <property>
  3. <name>mapred.job.tracker</name>
  4. <value>node1:9001</value>
  5. </property>
  6. </configuration>

2.2.6 配置SSH免密码登录

2.2.6.1 SSH的相关概念

首先需要介绍一下SSH是什么,很多人在初次接触hadoop时,只是简单的按照说明进行了一步步的模仿,但并不懂得其本质的道理,因此造成很多人在配置过程中出现错误,无法继续前进,所以有必要先对SSH的基本概念做一些阐述,在理解的基础上进行配置。

我们知道,在同一个局域网内(相同的网关),两台机器可以相互访问,但是我们通常需要输入用户名和密码才能登陆从A机器登陆到另B机器上,此时,我们A机器的使用者需要知晓B机器的用户名和密码。那么SSH的作用就在于,当A想登陆到B时,如何设定一种协议,使得其无需提供密码就能完成登陆。

SSH(Security Shell)免密码登陆的设计思想是:在A机器上生成一个公钥(在id_dsa.pub文件中)如果B机器也拥有这个公钥(放置在authorized_keys文件中),那么就可以认为A登陆到B是安全的,或者说B机器许可了A机器来登陆。

2.2.6.2 Hadoop中的SSH免密码登陆设置

由于hadoop整个集群系统至少需要NameNode节点可以免密码登陆到所有其他DataNode节点,因此,结合上述概念,我们可以知道,这里我们需要完成的主要配置任务包含如下两点:

  1. 让每台机器生成自己的公钥(id_dsa.pub文件),并实现本地可免密码登陆,即每台机器自己的 authorized_keys 文件中包含自己的公钥。
  2. 让每个DataNode节点拥有NameNode节点的公钥,集每个DataNode的 authorized_keys 文件中还包含了NameNode的公钥。

具体的配置操作如下:

本地完成SSH免密码登陆的配置:

  • 生成公钥:

    ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

  • 将公匙添加到authorized_keys文件中:

    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

此时可测试本地是否可以免密码登陆:

  1. ssh localhost #ssh登陆,若不询问输入密码,则配置成功
  2. exit #退出ssh登陆

同理,将公匙复制到 node2 和 node3 的 authorized_keys 文件中,就可以让 node1 免密码登录到 node2 和 node3:

  • 在node1上输入远程复制命令:

    scp ~/.ssh/id_dsa.pub root@node2:~/ scp ~/.ssh/id_dsa.pub root@node3:~/

  • 分别到 node2 和 node3 机器上,添加 node1 的公匙信息到 authorized_keys 文件中:

    cat ~/id_dsa.pub >> ~/.ssh/authorized_keys

此时,可到node1上进行登陆测试。

同理,在node2生成公匙,然后复制到node1和node3的authorized_keys文件中,这样node2就可以无密码登录node1和node3, node3也可做相同的操作。

以上就是三台虚拟机的SSH免密码登录配置方法,当然,可以根据实际的使用情况来设置,hadoop并不一定非要三台都支持双向的免密码登录。

2.2.7 启动hadoop

最后就是hadoop的启动环节了,具体操作可按如下顺序进行。

2.2.7.1 配置hadoop环境变量

为方便今后的使用,可在环境变量中加入hadoop的bin目录,打开 /etc/profile 文件,添加如下内容:

  1. # set hadoop environment
  2. export HADOOP_INSTALL=/opt/dev/hadoop/hadoop-1.2.1
  3. export PATH=${HADOOP_INSTALL}/bin:$PATH

配置完成后,使用logout登出,再重新登录,输入 hadoop version,若配置成功,可查看到如下内容:

  1. [root@node1 ~]# hadoop version
  2. Hadoop 1.2.1
  3. Subversion https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152
  4. Compiled by mattf on Mon Jul 22 15:23:09 PDT 2013
  5. From source with checksum 6923c86528809c4e7e6f493b6b413a9a
  6. This command was run using /opt/dev/hadoop/hadoop-1.2.1/hadoop-core-1.2.1.jar
2.2.7.2 格式化NameNode

输入如下命令即可:

  1. hadoop namenode format
2.2.7.3 启动hadoop进程

输入 start-all.sh,若只想先启动分布式文件系统,可输入 start-dfs.sh

2.2.7.4 查看相关信息

我们可以从Windows主机或者虚拟机中的浏览器访问hadoop。

首先需要设置Windows主机上的host文件,目录位置: C:\Windows\System32\drivers\etc\hosts,添加虚拟机的三个节点的主机名与IP的映射关系:

  1. #hadoop-cluster
  2. 192.168.66.100 node1
  3. 192.168.66.101 node2
  4. 192.168.66.102 node3
  5. 192.168.66.103 node4

----- 至此,Hadoop的基本配置就已基本完成。-----

2017/7/25 22:02:26

Hadoop的配置过程(虚拟机中的伪分布模式)的更多相关文章

  1. Hadoop的安装与配置(虚拟机中的伪分布模式)

    1引言 hadoop如今已经成为大数据处理中不可缺少的关键技术,在如今大数据爆炸的时代,hadoop给我们处理海量数据提供了强有力的技术支撑.因此,了解hadoop的原理与应用方法是必要的技术知识. ...

  2. 基于MACVLAN配置VMWARE虚拟机中容器网络

    基于MACVLAN配置VMWARE虚拟机中容器网络 测试部环境组 201711 0 文档说明 MACVLAN是docker的一种支持跨主机网络的driver.macvlan本身是linux kerne ...

  3. Hadoop运行模式:本地模式、伪分布模式、完全分布模式

    1.本地模式:默认模式 - 不对配置文件进行修改. - 使用本地文件系统,而不是分布式文件系统. - Hadoop不会启动NameNode.DataNode.ResourceManager.NodeM ...

  4. hadoop环境配置过程中可能遇到问题的解决方案

    Failed to set setXIncludeAware(true) for parser 遇到此问题一般是jar包冲突的问题.一种情况是我们向java的lib目录添加我们自己的jar包导致had ...

  5. 【Hadoop】Hadoop的安装,本地模式、伪分布模式的配置

    Download hadoop-2.7.7.tar.gz 下载稳定版本的hadoop-2.7.7.tar.gz(我用的2.6.0,但是官网只能下载2.7.7的了) Required Software ...

  6. 云计算课程实验之安装Hadoop及配置伪分布式模式的Hadoop

    一.实验目的 1. 掌握Linux虚拟机的安装方法. 2. 掌握Hadoop的伪分布式安装方法. 二.实验内容 (一)Linux基本操作命令 Linux常用基本命令包括: ls,cd,mkdir,rm ...

  7. Linux ->> UBuntu 14.04 LTE下安装Hadoop 1.2.1(伪分布模式)

    Hadoop的运行模式可分为单机模式.伪分布模式和分布模式. 首先无论哪种模式都需要安装JDK的,这一步之前的随笔Ubuntu 14.04 LTE下安装JDK 1.8中已经做了.这里就不多说了. 其次 ...

  8. hadoop1.2.1伪分布模式配置

    1.修改core-site.xml,配置hdfs <configuration> <property> <name>fs.default.name</name ...

  9. (原创)LAMP教程5-配置VirtualBox虚拟机中centos6.4的网卡

    (原创)LAMP教程5-配置VirtualBox虚拟机中centos6.4的网卡 是的,今天我们要讲的是如何配置VirtualBox虚拟机中centos6.4的网卡,毕竟我们是要做网站开发的,没有网络 ...

随机推荐

  1. asp.net core 教程(四)-项目结构

    Asp.Net Core-项目结构 Asp.Net Core-项目结构 案例 在这一章,我们将讨论 ASP.NET Core项目在文件系统上的组成方式以及不同的文件和目录都是如何协同工作的. 让我们打 ...

  2. 20+行代码使用es5 Object.defineProperty 实现简单的watch功能

    /** * 一个简单的demo 帮助理解defineProperty,只对Object类型参数有效 */ $watch=function(myObject,callback){ function in ...

  3. [0] Devexpress 控件参数集合

    gridview控件/统计功能 比如对“数量”列进行统计,只要在GridControl的设计器中设置SummaryItem:   SummaryItem.DisplayFormat = "{ ...

  4. 前台ajax加载数据

    <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> <script sr ...

  5. django ngRoute ui-router 开发环境下禁用缓存

    问题描述: Python manage.py runserver ,禁用缓存,及时修改反馈到浏览器 解决办法: 使用dummy cache: Dummy caching (for developmen ...

  6. 【CC2530入门教程-01】IAR集成开发环境的建立与项目开发流程

    [引言] 本系列教程就有关CC2530单片机应用入门基础的实训案例进行分析,主要包括以下6部分的内容:1.CC2530单片机开发入门.2.通用I/O端口的输入和输出.3.外部中断初步应用.4.定时/计 ...

  7. 玩转UITableView系列(一)--- 解耦封装、简化代码、适者生存!

    UITableView这个iOS开发中永远绕不开的UIView,那么就不可避免的要在多个页面多种场景下反复摩擦UITableView,就算是刚跳进火坑不久的iOS Developer也知道实现UITa ...

  8. php通过cURL下载网络上面的一个HTTPS的资源

    <?php /** * php通过cURL下载网络上面的一个HTTPS的资源 * 案例:从google的CDN上下载jquery- v1.7.1 */ $curlobj = curl_init( ...

  9. EF查询百万级数据的性能测试

    一.起因  个人还是比较喜欢EF的,毕竟不用写Sql,开发效率高,操作简单,不过总是听人说EF的性能不是很好,也看过别人做的测试,但是看了就以为真的是那样.但是实际上到底是怎么样,说实话我真的不知道. ...

  10. kbengine_js_plugins 在Cocos Creator中适配

    kbengine_js_plugins 改动(2017/7/6) 由于Cocos Creator使用严格模式的js,而原本的kbengine_js_plugins是非严格模式的,因此为了兼容和方 便C ...