当前位置: 首页 > 编程日记 > 正文

Hadoop学习笔记(1) ——菜鸟入门



Hadoop学习笔记(1)

——菜鸟入门

Hadoop是什么?先问一下百度吧:

【百度百科】一个分布式系统基础架构,由Apache基金会所开发。用户能够在不了解分布式底层细节的情况下。开发分布式程序。充分利用集群的威力进行快速运算和存储。 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;并且它提供高传输率(high throughput)来訪问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。

HDFS放宽了(relax)POSIX的要求,能够以流的形式訪问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

Hadoop主要用于一些分布式计算。在这个大数据年代,那这个的确是一个非常不错的工具。所以非常有必要来学一学。

如何开展这个学习呢,无论如何。学习一样新东西,我喜欢这种顺序:先依葫芦画瓢。一步一步行将其执行起来,再来分析一些应用场景及执行的情况,然后深入看一下其高级应用。 最后因为这个是一个开源产品,正好来借此机会来读一读大牛们的代码。学学其精华。

好了,開始行动:

  1. 执行环境搭建

首先,这个是须要执行在linux系统中的,所以得安装个linux才行,市面上有非常多个linux的版本号,如红帽子、Fedra、Ubuntu。选哪种呢,对我这样的习惯windows的来说,当然要使用方便的。所以选择了Ubuntu。

安装Ubuntu,这里我就不多说了,在官网上有非常多。事实上也非常easy,一路下一步。

当然这里能够安装在Vmware虚拟机上,也能够直接安装在硬盘上。

我个人建议,能够直接安装在硬盘上,与现有windows做个双系统。

由于后面还要跑开发环境 eclipse。在虚拟机上会有点吃力。 同一时候安装在硬盘上后,还能够这样玩。在进入windows后,安装 vmware,然后新建虚拟机后,不要创建硬盘,直接使用硬盘的分区。这样, 就能够在vmware中启动安装在硬盘上的ubuntu了。

做到双系统,双启动。

这样优点是。当要开发时。能够直接进ubuntu系统,当仅仅是看看代码。以及后面模拟分布式部署时,就能够用vmware来启动。同一时候再建上几个虚拟机来进行分布式部署。

操作系统准备好后,就须要一些组件了,hadoop比較简单,仅仅须要ssh和java环境。再加个下代码的SVN。

先用 sudo apt-get install subversion ssh ant 这个命令,把SSH、Ant和SVN安装起来。

java环境,能够在网上下载一个安装JDK包,如:jdk-6u24-linux-i586.bin

安装直接在文件夹下执行./jdk-6u24-linux-i586.bin就可以。

然后配置jdk文件夹:

先进入安装文件夹 cd jdk-6u24-…

然后输入 PWD 就能够看到java安装文件夹,复制下来:

命令行运行:sudo gedit /etc/profile

在打开的文件中,追加:

export JAVA_HOME=/home/administrator/hadoop/jdk1.6.0_27 //这里要写安装文件夹

export PATH=${JAVA_HOME}/bin:$PATH

运行source /etc/profile 马上生效

验证是否安装完毕,那比較easy了。在命令行下执行 java -version ant svn ssh 看是否找不到命令。假设都能找到。说明OK了。

  1. 下载代码:

这是个开源的系统,代码非常方便用SVN就能够下载到,版本号也非常多,在这里我选择0.20.2版本号,一个是网上好多书都基于这个版本号的。另外是看源代码,还是曾经点版本号吧,后面的版本号里面肯定又加了非常多。

执行这个命令来下载:

svn co http://svn.apache.org/repos/asf/hadoop/common/tags/release-0.20.2/

下载完毕后,会在当前目录内产生一个新目录release-0.20.2,这里面就是代码了。

为了后面方便操作。把这目录重命令一下:

mv release-0.20.2/ hadoop-0.20.2

好了,用图形界面进入该目录。看一看:

  1. 编译代码

刚下完的代码是无法直接执行的。须要编译一下,但用什么编译呢?

编译前先改动一下build.xml,打开,将里面的版本改成:0.20.2。例如以下:

看到代码里面有个build.xml。这个是典型的用ant编译用的配置文件,所以直接在命令行里输入:

~/hadoop-0.20.2$ant

~/hadoop-0.20.2$ant jar

~/hadoop-0.20.2$ant examples

[注意] 编译时须要联网,否则在自己主动下载jar包时会挂掉。

然后屏幕会刷啊刷,等到完毕看到以下字符时,也就OK了:

  1. 配置SSH

我们了解到。这个hadoop是支持分布式执行的,每台机器到时都会来安装hadoop程序,假设想启动全部程序怎么办? 一台台去启动? 那也太土了。 当然是远程去启动咯。为实现这个目标。就得用上SSH了。

SSH是什么。说白了。这个就是一个远程登陆器。跟远程桌面、telnet几乎相同。

在linux上全部操作都能够用命令行来完毕,全部SSH也就是一个命令行形式,同一时候比telnet高级,由于通过了加密通道传输信息。

那我们就部署了一台机器,还要这个SSH吗? 答案是要的,由于在执行hadoop里,即使是本机的。里面也要通过SSH localhost的方式来启动。这样代码统一。

前面不是安装过SSH了么,还要配置什么?SSH正常登陆时,是须要输入usernamepassword的,可是当全部的hadoop子服务都受主服务管了后,最好就直接信任了,不要输入帐号信息。所以我们配置的目的也就是这个。

先试一下,我用SSH登陆当前本机信息:

能够看到。登陆本机时,也要输入一下password。怎么办?

SSH是能过RSA加密的,所以有公钥私钥的说法,所以,我们先产生一对固定的公私钥,执行这个ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa命令:

这里产生公私钥,并生成在.ssh目录下。于是我们就进入看一下:

果然,这里多了两个文件,id_dsa为私钥。id_dsa.pub为公钥

然后再把公钥复制成authorized_key。即将这个公钥固定为SSH登陆所用。

这步非常重要。做完这步后。就能够再试一下登陆本机了:

看,如今再ssh localhost时,就直接进入。没有再输入帐号了。

到这里,SSH配置就成功了。

  1. 改动配置文件

在正式执行之前。还要改动一下配置文件才地。这里详细的配置參数。就不讲,葫芦画瓢么,先跑起来。后面再来研究这是为啥:

在代码的conf目录内。就能够找到以下几个配置文件。分别配置成以下内容:

core-site.xml

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/zjf/hadoop-0.20.2/tmpPath</value> 。这里改下路径

</property>

</configuration>

hdfs-site.xml

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

mapred-site.xml

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

</property>

<property>

<name>mapred.job.tracker</name>

<value>hdfs://localhost:9001</value>

</property>

</configuration>

  1. 执行

Hadoop是一头奇妙的大象,那我们得站在大象背上说句Hello world了。

进入hadoop文件夹: $cd Hadoop-0.20.2

首次执行,须要对namenode进行格式化:bin/hadoop namenode -format    

启动hadoop:

bin/start-all.sh

关闭hadoop能够用:

bin/stop-all.sh

假设验证启动成功呢?有两种方式

  1. 訪问一下管理页面看:

Job跟踪:http://localhost:50030

NameNode结点:http://localhost:50070

  1. 用jps看一下有几个java进程在执行。假设是以下几个就正常了:

主要有DataNode NameNode SecondaryNameNode TaskTracker JobTracker这几个进程,就表示正常了

    

系统启动正常后,跑个程序吧

$mkdir input

$cd input

$echo "hello world">test1.txt

$echo "hello hadoop">test2.txt

$cd ..

$bin/hadoop dfs -put input in

$bin/hadoop jar build/hadoop-0.20.2-examples.jar wordcount in out

$bin/hadoop dfs -cat out/*

最关健的是。最后输入:

输出这个结果这就表示我们的程序执行成功了。

至于这结果是什么意思,我想看到后大概也猜到了吧。至于具体讲解,下期再看。

转载于:https://www.cnblogs.com/zsychanpin/p/6736842.html

相关文章:

HTTP协议简介

HTTP协议HTTP协议简介 超文本传输协议&#xff08;英文&#xff1a;HyperText Transfer Protocol&#xff0c;缩写&#xff1a;HTTP&#xff09;是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。 HTTP的发展是由蒂姆伯纳斯-李于1989年在…

计算机组成原理读写周期波形图,第3章存储器层次结构-1讲述.ppt

第3章存储器层次结构-1讲述计算机组成原理 * 计算机组成原理 ——存储器层次结构(1) 2016-3-18 几个基本概念 1、存储器&#xff1a;计算机系统中的记忆设备&#xff0c;用来存放程序和数据。 2、存储元&#xff1a;存储器的最小组成单位&#xff0c;用以存储1位二进制代码。 3…

iOS架构篇-4 架构模式MVVM

iOS架构篇-4 架构模式MVVM MVVM原理MVVM 登录例子View:ViewModel:Model:如果觉得可以就点个👍吧,欢迎粉丝收藏,土豪打赏,您的关注就是我们创作的动力!读者有什么想看的相关技术篇章,欢迎评论留言!QQ交流群:908058499MVVM原理 #mermaid-svg-s6n4t9QkR9OeNy45 .label{fon…

CV00-01-开篇与环境搭建

目录 Intro 环境搭建 TensorFlow搭建 PyTorch搭建 PaddlePaddle搭建 Intro 从今天起学习CV&#xff0c;为期6个月&#xff0c;以三个真实项目为背景学习CV。 目前是第一个项目——车道线检测。时间两个月&#xff08;共8周&#xff09;&#xff0c;每周五、周日晚上在线…

Spring MVC环境中的文件上传功能实现

在实际开发过程中&#xff0c;尤其是web项目开发&#xff0c;文件上传和下载的需求的功能非常场景&#xff0c;比如说用户头像、商品图片、邮件附件等等。其实文件上传下载的本质都是通过流的形式进行读写操作&#xff0c;而在开发中不同的框架都会对文件上传和下载有或多或少的…

iOS架构篇-5 CI/CD(持续集成、持续交付、持续部署)

iOS架构篇-5 CI/CD(持续集成、持续交付、持续部署) CI CI是指持续集成,代码的更新会定期自动构建、测试并合并到公共仓库中,方便多分支时解决冲突问题 CD CD是指持续交付和/或持续部署,开发人员改动代码会自动测试提交到仓库,运维实施人员将其部署到生产环境中,方便部…

计算机函数模式的用处是啥,请问怎么理解计算机中的函数?

你的理解有点外行看热闹的意思&#xff0c;呵呵。代码本身就是抽象的&#xff0c;所以“计算机中的函数是一种对代码进行抽象的方式”不能说不对&#xff0c;但是也和没说一样。至于“我们使用抽象出来的函数&#xff0c;而不用关心函数里面的代码是如何组织的”&#xff0c;只…

CV00-03-CV基本操作2

基本操作2 Similarity Transform相似变换 Similarity Transform相似变换&#xff1a;图像形状大小不变&#xff0c;位置发生变化。比如&#xff1a;做平移、旋转。相似变换具有保角性、保比例性&#xff0c;经过相似变换以后原有的角度和比例保持不变。确定一个相似变换矩阵需…

[LeetCode] [C++] 第一轮刷题总结(持续更新~~~)

LeetCode 解题报告 LC_1_解题报告LC_2_解题报告LC_3_解题报告LC_4_解题报告LC_5_解题报告LC_6_解题报告LC_7_解题报告LC_206_解题报告LC_237_解题报告LC_344_解题报告 LeetCode 1. Two Sum 解题思路&#xff1a;两次循环遍历数组&#xff0c;找到两个元素和等于target 注意点&…

Android Studio 在项目中引用第三方jar包

在Android Studio项目中引用第三方jar包的方法&#xff1a; 步骤&#xff1a; 1、在build.gradle文件中添加如下代码&#xff1a; 备注&#xff1a;要添加在Android作用域下 sourceSets {main {jniLibs.srcDirs [libs]}} 点击【Sync Now】&#xff0c;会生成jniLibs文件夹 找到…

android专栏目录

android专栏目录 Android基础篇 android专题-数据库room android专题-蓝牙扫描、连接、读写 Android专题-常用第三方框架 Android高级篇 Android架构篇-1 项目组织架构 Android架构篇-2 国际化多语言 Android架构篇-3 网络接口封装 Android架构篇-4 架构模式MVVM Android架…

东北大学计算机分数线2017,东北大学2017年本科一批录取分数线(全国)

东北大学2017年全国各省各批次集中录取时间为7月6日-27日&#xff0c;在各省录取结束的分批次分科类录取最低分将在本页面持续更新公布&#xff0c;考生录取结果可通过关注东北大学招生办官方微信公众号(neuzs-1923)录取专区查询&#xff0c;最终录取结果请以考生收到的录取通知…

CV00-04-卷积

卷积概念 由于不好进行文字描述&#xff08;懒&#xff09;&#xff0c;我直接推荐一个博客图像卷积&#xff0c;讲解图像卷积的概念。 图像卷积操作&#xff08;convolution&#xff09;&#xff0c;或称为核操作&#xff08;kernel&#xff09;&#xff0c;是进行图像处理的…

unity项目build成webgl时选择生成目录(解决方法)

在unity里点击File>>Build Settings...>>勾选你要生成的Scenes>>选择webgl>>后面Development Build不要勾选&#xff1a;点击build后会让你选择生成的目录&#xff0c;此处要慎重选择&#xff0c;否则会报错&#xff01; 不要选择到项目所在目录&#…

STL中的nth_element()方法的使用

STL中的nth_element()方法的使用 通过调用nth_element(start, startn, end) 方法可以使第n大元素处于第n位置&#xff08;从0开始,其位置是下标为 n的元素&#xff09;&#xff0c;并且比这个元素小的元素都排在这个元素之前&#xff0c;比这个元素大的元素都排在这个元素之后&…

Android架构篇-2 国际化多语言

Android架构篇-2 国际化多语言 实现功能: 1.默认采用系统语言 2.语言切换后实时生效 3.支持中英文 4.我的->设置->切换语言 思路:app首次初始设置为系统语言,用户在app内切换语言时发送语言切换事件,刷新所有页面 在AppBaseActivity、AppBaseFragment通过EventB…

齐鲁工业大学计算机读研,齐鲁工业大学考研难吗

齐鲁工业大学考研难吗&#xff1f;1、齐鲁工业大学考研难度算是比较容易。不在大学考研难度排名前100名单之内。2、考研究生难易程度还是看招生院校的地域、名气、排名等因素&#xff0c;生源不同&#xff0c;竞争力度也不同。发达地区特别是像北京&#xff0c;上海这样的大城市…

Python基础18-常用模块之os、sys、json、pickle、shelve、xml、re、logging、configparse、hashlib等

目录 os、os.path sys json pickle、shelve、xml、re、logging、configparse、hashlib未完待续…… os、os.path Python的os模块里面定义了常用的路径、文件操作。 os.curdir # curdir相对路径的当前路径“点” os.pardir # pardir相对路径的父目录“点点”。 os.sep …

剑指offer 重建二叉树 python

题目描述 输入某二叉树的前序遍历和中序遍历的结果&#xff0c;请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 样例 输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6} 返回二叉树头节点想法&#xff1a; 使用递归&#xff0c;既…

C#中的Liststring泛型类示例

在C#代码中使用一系列字符串(strings)并需要为其创建一个列表时&#xff0c;List<string>泛型类是一个用于存储一系列字 符串(strings)的极其优秀的解决办法。下面一起有一些List<string>泛型类的示例&#xff0c;一起来看看吧。 List示例 下面是一个使用C#创建一个…

计算机检索的优点,专利检索与分析系统拥有哪些优势?

专利检索与分析系统拥有哪些优势&#xff1f;现在很多朋友都在了解专利检索与分析系统又有哪些优势&#xff0c;因为他们需要使用这些系统&#xff0c;不少朋友都会利用业余时间搞各种发明专利&#xff0c;并申请发明专利&#xff0c;在申请之前&#xff0c;人们就需要对专利进…

Android架构篇-1 项目组织架构

Android架构篇-1 项目组织架构 模块化分层 1.结构清晰,各模块代码分离,符合高内聚低耦合,快速定位查找代码 2.团队协作开发灵活,互不影响,各模块完成后合并即可完成整体app 3.抽离公共层、模块层、业务层,方便维护管理 分层架构图 App下的Home(首页)、Mine(我的)、Log…

Python基础19-面向对象基础

目录 面向对象概述 面向对象的一种实现 类的相关知识 对象的相关知识 面向对象属性的查改增删操作 类属性的查改增删 对象属性的查改增删 关于类、对象属性容易混淆额或忽略的地方的说明 面向对象概述 编程发展至今有面向过程编程、函数式编程、面向对象编程三大流派&…

《一杯沧桑》有感

《一杯沧桑》 “每一个人的一生&#xff0c; 都是一仅仅杯子。 仅仅是杯子的大小不一样。 有些杯子&#xff0c; 它能够装下一片汪洋&#xff0c; 而有些杯子&#xff0c; 它却装不下一点忧伤。 …

Android架构篇-3 网络接口封装

Android架构篇-3 网络接口封装 实现功能: 1.暴露参数请求地址url、请求方法method、请求参数params、请求头header、请求响应response、https请求证书 2.支持get、post、文件上传下载、https证书 以封装OKhttp为例: 接口定义 业务层接口定义 public class BusinessSer…

域中计算机设定重启,域中添加计算机设定的步骤

我来和你详细说下吧&#xff01;既然你已经建立域了&#xff0c;那么就好办了&#xff01;1。为各台电脑建立域帐号&#xff01;2.在每台电脑上加域&#xff01;a、首先在每台电脑上将用户的权限降到USER。b、右键选我的电脑&#xff0c;在计算机名称里面把域一栏里面输入你自己…

浅谈 拓扑排序

我是什么时候想到要学拓扑排序的呢&#xff1f; 在一次模考的时候&#xff0c;有这样一道题&#xff0c;叫做食物链&#xff0c;我是写了记忆化搜索的&#xff0c;然而全场都写了拓扑板子 后来发现我居然不会这么基础的算法&#xff0c;有点慌 下面进入正题 拓扑排序是针对一些…

Python基础20-面向对象:静态、组合、继承与派生、多态、封装、反射、内置attr方法等

目录 静态 静态属性property 类方法classmethod 静态方法staticmethod 组合 继承与派生 继承与派生 继承顺序 在子类中调用父类方法与super 多态 封装 反射 模块的动态导入 内置的attr方法 带双下户线的attr方法__setattr__、__getattr__、__delattr__ __getat…

C++ primer 第三章笔记

chapter 3 字符串,向量,数组 # 命名空间的using声明 头文件不应包含using声明; 注:using namespace std; #标准库类型string 1.string 表示可变长的字符序列; 2.#include<string> 3.字符串字面量 与 string 是不同类型; 4.cctype头文件种定义了一组标准库函数(改变某个字…

街篮最新服务器,《街篮》全新两组服务器开启 与你一起迎新年!

2016还剩下几个小时&#xff0c;2017即将到来。为了庆祝新的一年到来&#xff0c;《街篮》两组全新的服务器“闻鸡起舞”与“金鸡独立”正式与大家见面&#xff01;本次新服务器将在官服和混服同时开启&#xff0c;其中“闻鸡起舞”属于G系的新服务器&#xff0c;而“金鸡独立”…