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
运行以下命令:
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 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.......
自此,整个教程完成,本教程是昨晚和今天早上上班之前完成的,教程是到公司凭借记忆和笔记完成,可能会有记错的地方,欢迎大家更正。