Hadoop2 伪分布式部署
一.简单介绍
二.安装部署
三.执行hadoop样例并測试部署环境
四.注意的地方
一.简单介绍
Hadoop是一个由Apache基金会所开发的分布式系统基础架构,Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;并且它提供高吞吐量(high throughput)来訪问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,能够以流的形式訪问(streaming
access)文件系统中的数据,则MapReduce为海量的数据提供了计算。Hadoop easy开发和执行处理大规模数据的平台。
HDFS是Java语言开发。因此不论什么支持Java的机器都可以部署Namenode或Datanode,HDFS採用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心server,负责管理文件系统的名字空间(namespace)以及client对文件的訪问。集群中的Datanode通常是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户可以以文件的形式在上面存储数据。从内部看,一个文件事实上被分成一个或多个数据块。这些块存储在一组Datanode上。Namenode运行文件系统的名字空间操作。比方打开、关闭、重命名文件或文件夹。
它也负责确定数据块到详细Datanode节点的映射。Datanode负责处理文件系统client的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。如图所看到的所看到的:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY29uZ2Nvbmc2OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
Hadoop Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序可以执行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。一个Map/Reduce 作业(job) 一般会把输入的数据集切分为若干独立的数据块,由 map任务(task)以全然并行的方式处理它们。
框架会对map的输出先进行排序。 然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统中。
整个框架负责任务的调度和监控,以及又一次执行已经失败的任务。
Hadoop是一个可以让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和执行处理海量数据的应用程序。
它主要有下面几个长处:
1.高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。
2.高扩展性。Hadoop是在可用的计算机集簇间分配数据并完毕计算任务的,这些集簇能够方便地扩展到数以千计的节点中。
3.高效性。Hadoop可以在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度很快。
4.高容错性。
Hadoop可以自己主动保存数据的多个副本,而且可以自己主动将失败的任务又一次分配。
5.低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比。hadoop是开源的,项目的软件成本因此会大大减少。
Hadoop 伪分布式模式是在单机上模拟 Hadoop 分布式。条件有限。所以linux虚拟机上部署Hadoop 伪分布式模式来模拟 Hadoop 分布式。
二.安装部署
Linux虚拟机上安装JDK配置。这里就不介绍,我之前文章有介绍过了。
第一步:ssh无password验证配置
1.查看一下SSH是否有安装
2.基于空口令创建一个新的SSH密钥,启用无password登录
#ssh-keygen -t rsa -P '' -f~/.ssh/id_rsa
#cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
3.測试一下是否须要password登陆
#ssh localhost 如图所看到的:
这说明已经成功安装,第一次登录时会询问你是否继续链接,输入yes就可以进入。
说明:
由于在Hadoop的安装过程中,假设不配置无password登录,每次启动Hadoop。须要输入password登陆到DataNode,我们一般会做集群。所以这样就不方便我们操作。
第二步:部署hadoop
1.下载 http://hadoop.apache.org/
我们这边下载的是hadoop-2.6.0.tar.gz
2.mkdir /usr/local/hadoop
3.#tar -zxvf hadoop-2.6.0.tar.gz//解压
4.#vi /etc/profile //配置hadoop
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.6.0
export PATH=$HADOOP_HOME/bin:$PATH
export HADOOP_LOG_DIR=${HADOOP_HOME}/logs
#source/etc/profile //使配置生效
5.配置core-site.xml,hdfs-site.xml及mapred-site.xml
#cd hadoop-2.6.0//进入hadoop解压的文件夹
etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.74.129:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/hadoop-2.6.0/tmp</value>
</property>
</configuration> etc/hadoop/hdfs-site.xml <configuration>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/hadoop-2.6.0/hdfs/name</value>
<description>对namenode存储路径</description>
</property> <property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hadoop-2.6.0/hdfs/data</value>
<description>对datanode存储路径</description>
</property> <property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration> etc/hadoop/mapred-site.xml <configuration>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://192.168.74.129:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/usr/local/hadoop/hadoop-2.6.0/mapred/local</value>
<description>存储mapred自己使用的路径</description>
</property> <property>
<name>mapred.system.dir</name>
<value>/usr/local/hadoop/hadoop-2.6.0/mapred/system</value>
<description>存储mapred系统级别的路径。能够共享</description>
</property>
</configuration>
6.改动hadoop-env.sh的jdk路径
#vi etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_67
7.#hadoop namenode -format //格式化HDFS文件系统以创建一个空大文件系统。
运行成功如图所看到的:
生成core-site.xml,hdfs-site.xml及mapred-site.xml相应的文件夹,如图所看到的:
第三步:启动hadoop服务
1.#sbin/start-all.sh //启动 sbin/stop-all.sh //关闭
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY29uZ2Nvbmc2OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
2.#jps//验证一下
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY29uZ2Nvbmc2OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
3.在浏览器查看hadoop信息
http://192.168.74.129:50070
http://192.168.74.129:8088 hadoop管理页面
4.能够在 cd /usr/local/hadoop/hadoop-2.6.0/logs 查看日志
三.执行hadoop样例并測试部署环境
1.我们从官方网的样例来执行一下,看看我们部署的hadoop环境是否正确,统计数代码例如以下:
import java.io.IOException;
import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class WordCount { public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{ private final static IntWritable one = new IntWritable(1);
private Text word = new Text(); public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
} public static class IntSumReducer
extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable<IntWritable> values,
Context context
) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
} public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
上传到hadoop解压的文件夹,如图所看到的:
2.查看有没有文件夹
#hadoop fs –ls //刚部署完。我们还没创建文件夹,所以会显示没文件夹如图所看到的:
3.我们新建一个file0.txt文本,输入内容,也就是我们要统计的单词,如图所看到的:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY29uZ2Nvbmc2OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
4.创建输入和输出文件夹
先在hdfs上建个目录
#bin/hdfs dfs -mkdir –p /user/root/input
#bin/hdfs dfs -mkdir -p /user/root/output
5.把要统计的文本上传到hdfs的输入文件夹下
# bin/hdfs dfs -put/usr/local/hadoop/hadoop-2.6.0/test/* /user/root/input //把tes/file0文件上传到hdfs的/user/root/input中
6.查看
#bin/hdfs dfs -cat /user/root/input/file0
7.编译我们刚才写的统计Java类WordCount.java
#bin/hadoop com.sun.tools.javac.Main WordCount.java
8.编译好的WordCount.class创建一个 jar
jar cf wc.jar WordCount*.class
9.运行统计
#bin/hadoop jar wc.jar WordCount /user/root/input/user/root/output/count
10.查看输出output
#bin/hdfs dfs -cat/user/root/output/count/part-r-00000
四.注意的地方
1.#hadoop namenode -format格式化时,HostName配置不正确时,会报这个错误。如图所看到的:
分析:
#hsotname
这时在/etc/hosts文件里找不到相应的这个hostname
解决方法:
1)vi /etc/hosts //改动设置的ip
2)#vi /etc/sysconfig/network //改动hostname
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY29uZ2Nvbmc2OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
3)/etc/rc.d/init.d/network restart //重新启动一下
假设没改动过来,就重新启动一下Linux虚拟机
2.#hadoop fs –ls会出现
Java HotSpot(TM) Server VM warning: Youhave loaded library/usr/local/hadoop/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0 which might havedisabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix thelibrary with 'execstack -c <libfile>', or link it with '-z noexecstack'.
解决:
#vi /etc/profile
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
#source /etc/profile
在运行一下hadoop fs –ls就不会出现这种问题,如图所看到的:
Hadoop2 伪分布式部署的更多相关文章
- 大数据技术之Hadoop3.1.2版本伪分布式部署
大数据技术之Hadoop3.1.2版本伪分布式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.主机环境准备 1>.操作系统环境 [root@node101.yinzh ...
- Hadoop1 Centos伪分布式部署
前言: 毕业两年了,之前的工作一直没有接触过大数据的东西,对hadoop等比较陌生,所以最近开始学习了.对于我这样第一次学的人,过程还是充满了很多疑惑和不解的,不过我采取的策略是还是先让环 ...
- ActiveMQ5.14.1+Zookeeper3.4.9高可用伪分布式部署
本文借鉴http://www.cnblogs.com/gossip/p/5977489.html,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的 ...
- hadoop3.1伪分布式部署
1.环境准备 系统版本:CentOS7.5 主机名:node01 hadoop3.1 的下载地址: http://mirror.bit.edu.cn/apache/hadoop/common/hado ...
- centos6.6安装hadoop-2.5.0(二、伪分布式部署)
操作系统:centos6.6(一台服务器) 环境:selinux disabled:iptables off:java 1.8.0_131 安装包:hadoop-2.5.0.tar.gz 伪分布式环境 ...
- 1、Hadoop的伪分布式部署
伪分布式模式搭建: 1.环境准备 (1)主机名(root用户) # vi /etc/sysconfig/network HOSTNAME=hadoo1 (不要用下划线) (2)创建普通用户cong ...
- hadoop2.6分布式部署时 livenodes等于1的原因
1.问题描述 在进行hadoop2.x版本的hdfs分布式部署时,遇到了一个奇怪的问题: 使用start-dfs.sh命令启动dfs之后,所有的datanode节点上均能看到datanode进程,然而 ...
- CentOS7 下 Hadoop 单节点(伪分布式)部署
Hadoop 下载 (2.9.2) https://hadoop.apache.org/releases.html 准备工作 关闭防火墙 (也可放行) # 停止防火墙 systemctl stop f ...
- 【Hadoop 分布式部署 三:基于Hadoop 2.x 伪分布式部署进行修改配置文件】
1.规划好哪些服务运行在那个服务器上 需要配置的配置文件 2. 修改配置文件,设置服务运行机器节点 首先在 hadoop-senior 的这台主机上 进行 解压 hadoop2.5 按照 ...
随机推荐
- php 基础------数组过滤
array_filter();过滤数组 语法: array_filter(array,callbackfunction); array 必写,规定要过滤的数组 callbackfunction 必写, ...
- CTSC2012 熟悉的文章 广义后缀自动机_单调队列
没啥难的,主要是单调队列忘了咋求了QAQ... Code: #include <cstdio> #include <algorithm> #include <cstrin ...
- 教你用webpack搭一个vue脚手架[超详细讲解和注释!]
1.适用人群 1.对webpack知识有一定了解但不熟悉的同学. 2.女同学!!!(233333....) 2.目的 在自己对webpack有进一步了解的同时,也希望能帮到一些刚接触webpack的同 ...
- Android与设计模式——单例(Singleton)模式
概念: java中单例模式是一种常见的设计模式.单例模式分三种:懒汉式单例.饿汉式单例.登记式单例三种. 单例模式有一下特点: 1.单例类仅仅能有一个实例. 2.单例类必须自己自己创建自己的唯一实例. ...
- node07---post请求、表单提交、文件上传
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- bzoj1002: [FJOI2007]轮状病毒(基尔霍夫矩阵)
1002: [FJOI2007]轮状病毒 题目:传送门 题解: 决定开始板刷的第一题... 看到这题的时候想:这不就是求有多少种最小生成树的方式吗? 不会啊!!!%题解... 什么鬼?基尔霍夫矩阵?? ...
- Struts2标签库整理【完整】
转自:https://blog.csdn.net/chen_zw/article/details/8161230 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,str ...
- Lists and strings
A string is a sequence of characters and a list is a sequence of values, but a list of characters is ...
- VS Code(Visual Studio Code)
这次推荐 VS Code,这是个跨平台.免费的代码编辑器,集成开发.调试.编译为一身.单成启动速度,资源占用,就已经赢了各大编辑器(什么 SB.N++之类).以前觉得 VS 2015 是宇宙最强编辑器 ...
- 数据绑定的知识点<%%>,<%#%>,<%=%>
1.<% %>用来绑定后台代码 如: < % for(int i=0;i<100;i++) { Reaponse.Write(i.ToString()); } %> 2. ...