CentOS7安装hadoop2.7.2 实现伪分布式 测试成功(亲测教程)

CentOS7安装hadoop2.7.2 实现伪分布式 测试成功(亲测教程)

CentOS7安装hadoop2.7.2 实现伪分布式 测试成功(亲测教程)

经过几天的尝试,终于在CentOS7下安装hadoop,实现伪分布式,并且测试成功

现在简要的回诉一篇,以方便记忆学习

为了实现在CentOS7下hadoop伪分布式成功,我们需要做以下工作(一共需要十一步):

第一:安装java

如果您还没有安装java,您可以在本博客输入关键字 安装java 查看帮助

这里,我的java安装在了/mysoft/java/jdk1.8

并且配置好java的环境变量

第二:安装hadoop

安装hadoop

我们可以在这里下载到hadoop

http://hadoop.apache.org/releases.html

我这里下载是的编译好的包

即我最后下载的包是文件名是hadoop-2.7.2.tar.gz

我将其解压,并复制到mysoft/hadoop  就是说我最终的hadoop的目录就是 /mysoft/hadoop

第三:配置hadoop的环境变量

[likilone@MyCentOS ~]$ vim .bash_profile
export HADOOP_HOME=/mysoft/hadoop
export PATH=追加$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

以上代码只是截取了与hadoop有关的环境变量

注意 代码中的追加,就是在原由的基础上追加hadoop的相关信息

配置好后一般需要重启服务器生效(我试过source .bash_profile似乎无效,不知道为何),这里可以稍后重启,带到所以配置完成后。

第四:修改IP地址

如果您的IP地址是自动获取,您还需要设置ip为静态的,这是因为我们ip映射的时候,可能会出现IP错误,当然如果你能保证您的IP地址为静态获取,就不必去设置

如修改网卡信息

vim /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static  #静态IP
IPADDR=192.168.0.101  #IP地址
一般来说只修改以上两项即可

我这里没有修改,因为我路由设置的静态获取

第五:修改IP映射

我们在安装操作系统的时候会让我们自己设置,但是我们一般都是傻瓜似的下一步下一步安装

所以我们这里的网络名是默认的IP地址,我们需要需改以便于我们操作和记忆

编辑vim /etc/hostname

# vim /etc/hostname
192.168.0.101

将上面的信息(就是IP地址名)修改为MyCentOS

这个修改是可以自定义的比如您可以修改为“xiaohua”

# vim /etc/hostname
MyCentOS

编辑/etc/hosts文件,设置主机名称与IP映射关系

# vi /etc/hosts
192.168.0.101        MyCentOS

中间的空格一般是一个tab

第六:配置ssh免密码登录

即使是在伪分布式下,我们也需要配置ssh免密码登录

如果您还不会,可以直接在本博客输入关键字搜索 ssh免密码登录

配置SSH免密码登录,在伪分布式模式下也需要啊,他需要通知其他的端口(每一个端口可以认为是一个计算机)去创建或执行,所以就需要配置免密码登录,否则您需要多次输入密码,如果是上千太服务器呢?可以想象以下!

第七:修改hadoop的五个配置文件

这五个配置文件在 /mysoft/hadoop/etc/hadoop 里面

7.1、修改hadoop-env.sh

这个文件主要是修改java_home的位置,修改JAVA_HOME的路径为以下路径

export JAVA_HOME=/mysoft/java/jdk1.8

注意这里必须这里修改,否则在后期会出现找不到jdk的错误,当时使用默认的 ${JAVA_HOME}却是可以获得hadoop的版本等信息的

7.2、在core-site.xml中修改或添加以下信息

<property>
 	<!-- 指定namenode的地址 -->
	<name>fs.defaultFS</name>
	<value>hdfs://MyCentOS:9000</value>
</property>
	<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
        <value>/mysoft/hadoop/tmp</value>
</property>
		

以下代码中的hdfs就是文件系统,当然您可以用file,或自己定义的文件系统

7.3、修改hdfs-site.xml

指定HDFS的副本数量,因为我这里是单机伪分布式,所以我这里设置为1,默认好像是3

<property>
	<name>dfs.replication</name>
	<value>1</value>
</property>

7.4、修改mapred-site.xml

指定mr运行在yarn上

<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

需要注意的是,并没有mapred-site.xml文件的,但是有mapred-site.xml.template

所以我们只需要将这个mapred-site.xml.template更名为mapred-site.xml即可

mv mapred-site.xml.template mapred-site.xml

7.5、修改yarn-site.xml

指定yarn(ResourceManager)运行的地址,以及reducer获取数据的方式

<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>MyCentOS</value>
</property>
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>

第八:我们需要关闭防火墙

关于安全,我们的分布式系统应该是存在与内网的,所以关闭防火墙也是没有关系的,当然我们可以自定义打开hadoop所需要的端口也可以。

关闭防火墙只需要简单的几步

service iptables stop       #关闭防火墙服务

chkconfig iptables off     #关闭防火墙开机启动

[likilone@MyCentOS ~]$ service iptables status
Redirecting to /bin/systemctl status  iptables.service
● iptables.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)
[likilone@MyCentOS ~]$ service iptables stop
Redirecting to /bin/systemctl stop  iptables.service
Failed to stop iptables.service: Unit iptables.service not loaded.
[likilone@MyCentOS ~]$ chkconfig iptables off
服务 iptables 信息读取出错:没有那个文件或目录

需要注意的是,以上信息显示了一个错误,就是没有这个防火墙,以上方法适用于centos7以前的版本

CentOS7.0如果没有改为iptables防火墙,那么他默认使用firewall作为防火墙,使用以下命令查看和关闭防火墙)

查看防火墙状态:firewall-cmd –state

关闭防火墙:systemctl stop firewalld.service

自此,我们就可以重启服务器了

注意,这里需要重启,一些更改才能生效

第九:格式化

运行命令

hdfs namenode -format

当最后出现以下信息就表示格式化成功

16/05/13 07:32:10 INFO util.ExitUtil: Exiting with status 0
16/05/13 07:32:10 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at MyCentOS/192.168.0.101
************************************************************/

关键代码是 Extting with status 0 表示成功

此时我们可以查看我们的hadoop目录下是否有tmp文件被创建,以及tmp目录下的其他文件被创建,这里是肯定是会被创建的

第十:启动我们的dfs和yarn

运行命令:start-dfs.sh

运行命令:start-yarn.sh

输入命令 jps可以查看我们运行了那些程序

[likilone@MyCentOS sbin]$ jps
6225 NodeManager
6099 ResourceManager
5765 SecondaryNameNode
6680 Jps
5384 DataNode
5146 NameNode

可以看到我们启动了 一共六个程序

NameNode 和DataNode 我们都很熟悉了吧,其他的我们可能不太熟悉,呵呵。

第十一:测试一下试试

我这里准备上传一个文件 WinQQ7.8-20151109-Longene.deb 到分布式文件系统的aaa目录下,这里大家注意看其大小是228.4MB

测试hadoop

 测试hadoop

运行以下命令:

hdfs dfs -mkdir /aaa 创建目录aaa

hdfs dfs -mkdir /aaa

运行以下命令:上传文件

hdfs dfs -put /mysoft/download/WinQQ7.8-20151109-Longene.deb /aaa/

hdfs dfs -put /mysoft/download/WinQQ7.8-20151109-Longene.deb /aaa/

接下来我们可以进入到一个很深的目录去查看,这个目录不记得了,大家到tem下去找吧

大家可以看以下截图,两个块相加的大小是和我们上的源文件大小是一样的228.4MB

不知道为何我这里的块大小是134.2,其实这个值是可以修改的

修改hdfs-site.conf 文件,新增name为dfs.block.size,value就是自定义的块大小

测试hadoop上传文件

测试hadoop上传文件

hadoop提供了很多测试的例子

比如:

以下测试是测试圆周率的

hadoop jar hadoop-mapreduce-examples-2.7.7.jar pi 10 10

以下测试是测试分析因为单词出现的个数的,aaa目录下我们我们已将上传好了一片英文文章

hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount /aaa/ /aaa/output

结果查看(自行查看output的测试结果是那一个文件)

hadoop fs -cat /aaa/output/part.......

自此,整个教程完成,本教程是昨晚和今天早上上班之前完成的,教程是到公司凭借记忆和笔记完成,可能会有记错的地方,欢迎大家更正。

猜你喜欢

转载自blog.csdn.net/qq_36178899/article/details/83618751