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 按照 ...
随机推荐
- 服务器搭建域控与SQL Server的AlwaysOn环境过程(三)配置故障转移
0 引言 主要讲述如何搭建故障转移集群,因为AlwaysOn是基于Windows的故障转移集群的. 在讲解步骤之前需要了解一下故障转移集群仲裁配置 下面图片来自<Windows Server20 ...
- ES6学习之环境配置
环境配置 一.建立工程目录 新建dist文件夹(用于存放转化的es5文件).新建src文件夹(用于存放es6文件),在该文件夹下建立index.js文件 二.编写index.html 在根目录下新建i ...
- BZOJ 2794 [Poi2012]Cloakroom(离线+背包)
2794: [Poi2012]Cloakroom Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 406 Solved: 241[Submit][St ...
- BZOJ 2154/2693 Crash的数字表格/jzptab (莫比乌斯反演)
题目大意:求$\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)$的和 易得$\sum_{i=1}^{n}\sum_{j=1}^{m}\frac{ij}{gcd(i,j)}$ 套 ...
- mycat读写分离+垂直切分+水平切分+er分片+全局表 测试
原文http://blog.163.com/bigoceanwu@126/blog/static/172718064201683031639683/ 读写分离:利用最基础的mysql主从复制,事务性的 ...
- Vue style里面使用@import引入外部css, 作用域是全局的解决方案
问题描述 使用@import引入外部css,作用域却是全局的 <template> </template> <script> export default { na ...
- 紫书 习题 8-24 UVa 10366 (构造法)
又是一道非常复杂的构造法-- #include<cstdio> #include<algorithm> #define REP(i, a, b) for(int i = (a) ...
- 今天遇到的一个诡异的core和解决 std::sort
其实昨天开发pds,就碰到了core,我还以为是内存不够的问题,或者其他问题. 今天把所有代码挪到了as这里,没想到又出core了. 根据直觉,我就觉得可能是std::sort这边的问题. 上网一搜, ...
- 养活一款APP要“烧”多少钱?
Duang!又一款APP刷爆朋友圈.大片范儿的电影截图.意味深长的经典对白均出自一款名为“足记”的APP. 足记团队刚于去年8月完成天使期融资,投资方是光速创投和紫辉创投,目前正准备A轮融资.且近一周 ...
- nyoj914(二分搜索+贪心)
题目意思: pid=914">acm.nyist.net/JudgeOnline/problem.php?pid=914 如今有n个物品的重量和价值各自是Wi和Vi,你能帮他从中选出k ...