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 按照 ...
随机推荐
- c语言中,常见数据类型的字节数
一直记不住这个,特意mark下来 和机器字长及编译器有关系: 所以,int,long int,short int的宽度都可能随编译器而异.但有几条铁定的原则(ANSI/ISO制订的): 1 size ...
- FCC高级编程篇之Symmetric Difference
Symmetric Difference Create a function that takes two or more arrays and returns an array of the sym ...
- 如何使用 Open Live Writer 插入原图
博客园的指南里写了使用 Open Live Writer 插入原图.去掉阴影并设置为默认设置的步骤,但是我还是找了好久,最后通过别的文章加上摸索才知道了如何设置为原图.这里给出详细地图片: 首先,插入 ...
- 解决PNG图片在IE6中背景不透明方法_解决IE6中PNG背
解决PNG图片在IE6中背景不透明方法_解决IE6中PNG背 目录 解决代码 解决png图片在html中 解决png作为网页背景-css 1.解决PNG图片在IE6中背景不透明的CSS与JS代码 ...
- js中获取数据类型
ES5中,js中数据类型:number.string.boolean.undefined.null.object js中获取数据类型常用的四种方式 实例: var a = 123, b = true, ...
- 抓取豆瓣的电影排行榜TOP100
#!/usr/bin/env python # -*- coding:utf-8 -*- """ 一个简单的Python爬虫, 用于抓取豆瓣电影Top前100的电影的名称 ...
- 紫书 习题8-14 UVa 1616(二分+小数化分数+精度)
参考了https://www.cnblogs.com/dwtfukgv/p/5645446.html (1)直接二分答案.说实话我没有想到, 一开始以为是贪心, 以某种策略能得到最优解. 但是想了很久 ...
- Inter-partition communication in multi-core processor
A multi-core processor includes logical partitions that have respective processor cores, memory area ...
- CodeForces 453A
Twilight Sparkle was playing Ludo with her friends Rainbow Dash, Apple Jack and Flutter Shy. But she ...
- Java数据结构-线性表之单链表LinkedList
线性表的链式存储结构,也称之为链式表,链表:链表的存储单元能够连续也能够不连续. 链表中的节点包括数据域和指针域.数据域为存储数据元素信息的域,指针域为存储直接后继位置(一般称为指针)的域. 注意一个 ...