你好,游客 登录 注册 搜索
背景:
阅读新闻

hadoop环境搭建(伪分布式)

[日期:2016-05-05] 来源:简书  作者:尸情化异 [字体: ]

以此篇文章来纪念痛苦的大数据课程。。。。。。

这里引用一段百度百科的话。

Hadoop 是一个由Apache基金会所开发的[分布式系统]基础架构。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

Hadoop 的安装分为本地模式、伪分布模式、集群模式。本地模式是运行在本地,只负责存储,没有计算功能,这里就不讲述了。伪分布模式是在一台机器上模拟分布式部署,方便学习和调试。集群模式是在多个机器上配置hadoop,是真正的“分布式”。但集群模式对硬件等要求比较高,也比较复杂。因此,我们在这里选择伪分布式的安装进行实验。在介绍伪分布式安装之前,我们先介绍一种文件传输工具的安装,后面将会用到。

文件传输工具的安装

WinSCP 简介

WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。

WinSCP 的安装就不用介绍了,傻瓜式地一直下一步就行。

安装完成后, 打开软件, 便进入图1.2。 在图中填写主机名:192.168.36.132(这是我ubuntu虚拟机IP地址);

然后再填写用户名和密码,这个用户名和密码是你ubuntu的用户名和密码。其它的地方不用动。如下图所示。

hadoop

点击图中的“登录”在弹出的对话框中选择“是”即可。最终的画面状

态如下图所示。 这样我们就可以进行windows系统和linux系统之间的文件相互拖动传输操作了。

Hadoop 伪分布式安装

Hadoop 伪分布式安装主要分为以下几个步骤:

  • 关闭防火墙
  • 修改 hostname
  • 设置 DNS 解析(ip 与 hostname 绑定)
  • 设置 ssh 自动登录
  • 安装 jdk
  • 安装 hadoop

关闭防火墙

在ubuntu上面直接运行 sudo ufw disable 就行了,要是用的centos的话,运行service iptables stop ,然后可以查看防火墙状态为关闭。

这样操作只是这会把防火墙给关闭了, 有可能下次重启之后防火墙会自动启动。于是,需要进行永久性关闭的操作。首先,输入命令“ chkconfig --list | grepiptables ”查看防火墙的状态,发现有的选项还是处于“on”的状态,下面需要输入命令“ chkconfig iptables off ”进行完全永久性关闭。再输入命令“chkconfig--list | grep iptables ” 查看防火墙的状态, 这时会发现全部都是处于 “off” 状态了。

这也说明防火墙彻底永久性被关闭了。这部分操作具体见图 2.2。在 linux 下防火墙称作“iptables” 。该命令的含义是查看服务 iptables 的状态。如果提示信息如图 2.2 所示,说明防火墙已经被关闭。

注意:防火墙的目的是关闭尽可能不用的端口,避免被恶意攻击,保证服务器运行安全。我们这里是实验环境,为了避免无谓的错误,选择关闭防火墙。在实际工作中,尽可能不这么做。

修改 hostname

为了便于操作, 这里我们需要修改系统的主机名。 首先, 输入命令“ hostname”查看当场的主机名。发现这个主机名不易被记住有点复杂不熟悉,然后我们输入命令“hostname hadoop ”把主机名改成我们熟悉容易记住的名字 hadoop,再输入命令“hostname”进行查看,这时就会出现我们刚设置的主机名 hadoop 了。我这里直接设置为ubuntu。

但这样的设置后,以后系统重启后又会回到原来的没设置前的主机名,为了防止回到原来的主机名, 下面我们需要进行操作让它永远成为我们自己设置的主机名。输入命令“ vi /etc/sysconfig/network ”对 network 文件进行编辑处理,把“HOSTNAME=localhost.localdomain ”改成“ HOSTNAME=hadoop ”保存退出即可。

这时我们为了验证主机名是否真的永久改成了我们刚设置的名字 “ubuntu”,我们可以输入命令“ reboot –h now ”对系统进行重启。然后重新远程连接进去,再输入命令 “ubuntu” 就会发现主机名已经改成我们刚才设置的 “ubuntu”了。

设置 DNS 解析

因为hadoop集群之间通过主机名互相访问,还有以后为了方便操作,所以可以设置dns 解析。输入命令“ vi /etc/hosts ”对hosts文件进行编辑,在文件的最后一行追加一行内容“192.168.36.132 ubuntu”保存退出即可。

设置后,可以在linux下Ping下看能不能ping通。( ping ubuntu )。

上面操作只是完成了在Linux系统下的ip与主机名绑定的操作,我们在windows下也可以同样设置,通过鼠标操作即可完成。 在Windows的C盘中进入 “c:windows/systme32/drivers/etc/hosts” 找到 “hosts”

文件打开在最下面输入一行内容“192.168.36.132 ubuntu”保存退出即可。

再在Windows下输入命令“ping ubuntu”看能否通信,如果可以说明设置成功。

设置 ssh免密码登陆

SSH 的全称是Secure Shell,使用非对称加密方式,传输内容使用rsa 或者dsa 加密,可以有效避免网络窃听。

hadoop 的进程之间通信使用ssh 方式,需要每次都要输入密码。为了实现自动化操作,我们下面配置SSH 的免密码登录方式。

这个设置网上多得很,简单说一下:

首先在没有设置免密码登陆的时候,输入 ssh 192.168.36.132 发现需要密码才能登陆。

下面对它进行设置免密码登录操作。

  • 输入命令“ ssh-keygen –t rsa ”(表示使用rsa加密方式生成密钥),回车后,会提示三次输入信息,我们一直回车就行 。
  • 然后输入命令“ cd .ssh/ ”进入 /root/.ssh/id_rsa 中,输入命令“ cp id_rsa.pub authorized_keys ”生成授权文件。

这时输入命令“ls”会发现生成的新文件已存在。然后再次输入 ssh 192.168.36.132 发现不再需要密码才能登陆。

另外,如果多次执行ssh,每次都要输入确认信息的话,说明配置失败了。

可以删除文件夹“.ssh”,重新配置。也可以重启虚拟机再配置。只要严格按照上面的步骤操作,保证能够成功的。

如果还搞不定, 给你个绝招删除/etc/udev/rules.d/70-persistent-net.rules 文件,重启系统”。配置出错,可以查看/var/log/secure 日志文件,找原因。

安装 jdk

这个就不用说了吧,直接运行命令sudo apt-get install openjdk-7-jdk,然后自己就安装好了,不过这种安装方法安装后的JAVA_HOME和一般的方法不大一样,稍后再说。

安装完后,运行 java -version ,如果结果类似于下图,就说明成功了。

安装 hadoop

由于新版本很多都不稳定,所以我选择安装的版本是1.1.2。

打开前面安装好的文件传输工具 WinSCP, 然后把文件 “hadoop-1.1.2.tar.gz”传输到 Linux 系统的/home/qhung/Public 目录下,其中qhung为你的用户名,之所以在Public 下面,我是因为权限的问题,免得后面为自己挖坑,懒得去弄权限问题。要是耐心够好的话,也可以放在其他文件夹下面试试!哈哈!

下面要对刚加进来的文件“hadoop-1.1.2.tar.gz”进行解压缩,输入命令 tar -zxvf hadoop-1.1.2.tar.gz 即可。这时会新产生一个文件目录“hadoop-1.1.2”,然后输入命令“ mv hadoop-1.1.2 hadoop ”将其改名为 hadoop。

修改配置文件

hadoop-1.1.2的话,配置文件全部在conf目录下面,所以cd到conf目录。然后修改下面几个文件:

hadoop 环境变量脚本文件 hadoop-env.sh

直接用gedit或者用vi打开 hadoop-env.sh,然后设置 JAVA_HOME, 注意去掉前面的 “#”:

hadoop-env.sh

这里首先得寻找JAVA_HOME在哪里,由于我们直接用命令行安装的jdk,所以JAVA_HOME在/usr/lib/下面。

hadoop 核心配置文件 core-site.xml

直接把下面的配置复制进行就行了

<configuration>
    <property>
        <name>fs.default.name</name>
            <value>hdfs://ubuntu:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
            <value>/home/qhung/Public/temp</value>
    </property>
</configuration>

然后保存退出。注意这里fs.default.name的value中的ubuntu是主机名,也可以是IP地址(192.168.36.132),还有hadoop.tmp.dir,我设置的是/home/qhung/Public/temp,同样也是避免权限问题。

hdfs 配置文件 hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
</configuration>

保存退出即可。

MapReduce 配置文件 mapred-site.xml

<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>ubuntu:9001</value>
    </property>
</configuration>

这里的ubuntu也是主机名。

masters和slaves

这两个里面直接都填写ubuntu就行。什么意思大家应该都懂。

这样一来我们所需配置的 4 个文件到此全部完成。 下面就只需要格式化文件系统了。

格式化系统

hdfs 是文件系统,所以在第一次使用之前需要进行格式化。首先执行命令

“ cd /home/qhung/Public/hadoop/bin ”进入到 bin 目录下,然后执行命令“hadoop namenode –format ”。

注意:只在第一次启动的时候格式化,不要每次启动都格式化。理解为我们

新买了块移动硬盘,使用之前总要格式化硬盘。

如果真的有必要再次格式化,请先把“ $HADOOP_HOME/tmp ”目录下的文

件全部删除。

读者可以自己观察目录” $HADOOP_HOME/tmp ” 在格式化前后的变化情况。

格式化操作很少有出现失败的情况。如果出现了,请检查配置是否正确。

启动系统

格式化完成后,开始启动 hadoop 程序。

启动 hadoop 的命令脚本都在$HADOOP_HOME/bin/下,下面的所有命令都

不再带有完整路径名称。

这里讲述 hadoop 启动的三种方式:

1、一次性全部启动。

执行命令“ start-all.sh ”启动 hadoop,观察控制台的输出,见图 2.38,可以

看到正在启动进程, 分别是 namenode、 datanode、 secondarynamenode、 jobtracker、

tasktracker,一共 5 个,待执行完毕后,并不意味着这 5 个进程成功启动,上面

仅仅表示系统正在启动进程而已。(关闭 hadoop 的命令是 stop-all.sh )

上面的命令是最简单的,可以一次性把所有节点都启动、关闭。除此之外,

还有其他命令,是分别启动的。

2、分别启动 HDFS 和 和 MapReduce

执行命令 start-dfs.sh,是单独启动 hdfs。

执 行 完 该 命 令 后 , 通 过 jps 能 够 看 到 NameNode 、 DataNode 、SecondaryNameNode 三个进程启动了,该命令适合于只执行 hdfs 存储不使用MapReduce 做计算的场景。关闭的命令就是 stop-dfs.sh 了。

执行命令 start-mapred.sh , 可以单独启动 MapReduce 的两个进程。 执行完该命令后, 通过jps 能够看到jobtracker、 tasktracker两个进程启动了。 关闭的命令就是stop-mapred.sh 。

当然,也可以先启动MapReduce,再启动 HDFS。这说明,HDFS 和 MapReduce 的进程之间是互相独立的,没有依赖关系。

3、分别启动各个进程

执行的命令是“hadoop-daemon.sh start [进程名称]”,这种启动方式适合于

单独增加、删除节点的情况,在安装集群环境的时候会看到。

一次性启动后还可以通过浏览器来查看到底启动没有。 在浏览器站分别输入

http://hadoop:50070 和 http://hadoop:50030 就会可以访问了。同样,在 Windows 系统下也是可以访问的。

运行成功后,用jps命令可以查看进程启动情况:

这次博客就记录到此,要是后面有时间的话,会继续记录几个eclipse开发,用hadoop运行的例子。





收藏 推荐 打印 | 录入:elainebo | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款