从零开始学习Hadoop--第1章 Hadoop的安装

Hadoop的安装比较繁琐,有如下几个原因:其一,Hadoop有非常多的版本;其二,官方文档不尽详细,有时候更新脱节,Hadoop发展的太快了;其三,网上流传的各种文档,或者是根据某些需求定制,或者加入了不必须要的步骤,或者加入容易令人误解的步骤。其实安装是很重要的步骤,只有安装好了,才能谈及下一步。

在本书撰写的时候,选用Hadoopstable版安装。


笔者的登录用户名是brian,大家可以根据自己的登录名更改命令,后面凡是出现brian的地方,都用自己的登录用户名替换掉。


1. 操作系统

操作系统是Ubuntu10.04桌面版。


如果操作系统其他版本的Ubuntu,在图形界面上会略有一点区别,但对安装影响不大。不同发行版的Linux的安装Hadoop的过程基本类似,没太大的差别。

2.Hadoop的版本

Hadoop当前的stable版是1.2.1

3.下载Hadoop

3.1Hadoop的主页上提供了多个下载链接。

http://www.apache.org/dyn/closer.cgi/hadoop/common/

3.2任选一个下载站点如下:

http://mirror.esocc.com/apache/hadoop/common/

3.3选择stable版,其实stable版就是1.2.1版:

http://mirror.esocc.com/apache/hadoop/common/stable/

在这个目录下有多个文件,是针对不同的linux发行版的,不需要全部下载。

3.4下载hadoop-1.2.1.tar.gzhadoop-1.2.1.tar.gz.mds

打开命令终端,下文的命令都是在终端里执行,为方便起见,命令都用引号引起。

stable版本的Hadoop的两个文件下载到“~/setup/hadoop”目录下,也就是”/home/brian/setup/hadoop”目录,命令如下:

3.4.1“mkdir -p ~/setup/hadoop”

mkdir命令是创建新目录。”-p”参数的意思是,假如hadoop目录的上级目录不存在,也创建上级目录。在终端里执行“manmkdir”,可以看到对这个命令的更详细的解释,按一下q键重新返回终端。

在命令终端里,”~”表示当前登录用户的主目录。比如说,在开机的时候,登录用户是brian,那么在命令终端里,”~”就表示目录”/home/brian”,如果开机时候,登录用户是john,那么”~”就表示”/home/john”目录。

3.4.2"cd ~/setup/hadoop"

cd就是changedirectory的缩写,切换当前目录。

3.4.3"wgethttp://mirror.esocc.com/apache/hadoop/common/stable/hadoop-1.2.1.tar.gz.mds"

wget是下载文件的命令行工具,”manwget”有详细说明。

3.4.4"wgethttp://mirror.esocc.com/apache/hadoop/common/stable/hadoop-1.2.1.tar.gz"

3.4.5"md5sum hadoop-1.2.1.tar.gz"

md5sum命令,计算一个文件的md5码。开源社区在提供源码下载的时候,会同时提供下载文件的md5码。md5码是根据文件内容生成的32位字符串,不同的文件的md5码是不同的,如果下载出错,下载文件的md5码跟正常文件的md5码是不一样的,由此检测下载是否正常,只有在极其罕见的情况下,才会出现不同的文件有相同md5码。hadoop-1.2.1.tar.gz是一个比较大的文件,需要检查下载的文件是否完整,执行这个命令之后,会出现形如"8D79 04 80 56 17 C1 6C B2 27 D1 CC BF E9 38 5A hadoop-1.2.1.tar.gz"的字符串,前面的一串字符串就是32位的md5校验码。

3.4.6"cat hadoop-1.2.1.tar.gz.mds"

cat命令,catcatenate的缩写,在标准输出上打印文件内容,通常标准输出就是屏幕。这个命令会在屏幕上打印hadoop-1.2.1.tar.gz.mds的内容,也就是一些校验码,在里面找到"md5"这一行,如果跟md5sum出来的一致,则表明下载文件完整的,否则需要重新下载。

4. 安装JavaJDK

4.1在这里有jdk 1.7的下载

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

如果是CPU32位,选择下载Linuxx86,如果CPU64位的,选择Linuxx64。一般来说,如果计算机是双核的,肯定支持64位操作系统。或者可以运行”uname-a”命令看一下,在笔者的笔记本上运行这个命令结果如下:

Linuxbrian-i3 2.6.32-51-generic #113-Ubuntu SMP Wed Aug 21 19:46:35 UTC2013 x86_64 GNU/Linux

后面的x86_64表明系统是64位的。

在这个页面,找”JavaSE Development Kit 7u40”,注意,这里有一个选项,必须选择”AcceptLicense Agreement”,接受License才能下载。

下载的jdk1.7,存放到 “/home/brian/setup/java-jdk-1.7/”目录。

下载的文件是”java-jdk-7u40-linux-i586.tar.gz”javajdk的版本常常有更新,次版本号有可能会比40更高一点。

4.2"sudo su -"

切换到root用户,参考”mansudo”。这个命令会切换到root用户,也就是最高权限的用户。因为后面要执行的jdk安装操作是在/usr/local目录下进行的,用root用户更方便。

4.3"cd /usr/local/lib"

4.4"tar -zxvf/home/brian/setup/java-jdk-1.7/java-jdk-7u40-linux-i586.tar.gz"

tarlinux下的打包和解压命令行工具,具体细节可以参考”mantar”。这个命令将java-jdk-7u40-linux-i586.tar.gz压缩包解压到当前目录下。解压缩完毕之后,执行"ls",能看到当前目录下有一个新目录叫"jdk1.7.0_40"

4.5配置环境变量:

4.5.1“gedit /etc/profile”

geditlinux下类似Windoes的记事本的编辑器,文件/etc/profilelinux下的配置文件。本命令会打开这个配置文件,以备编辑。

4.5.2添加配置

/etc/profile文件末尾加上如下的三行代码:


exportJAVA_HOME=/usr/local/lib/jdk1.7.0_40

exportCLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

exportPATH=$PATH:$JAVA_HOME/bin


保存文件,然后退出。

Linux系统,开机后会自动执行/etc/profile配置文件。export命令设置或者显示环境变量。上述三行代码,分别设置了JAVA_HOME,CLASSPATH, PATH这三个环境变量。

4.5.3"chown root:root -R /usr/local/lib/jdk1.7.0_40"

chown命令,更改目录或者文件的拥有者。这条命令将jdk1.7.0_40目录的拥有者改为root组的root用户。”-R”参数是递归的意思,将jdk1.7.0_40目录下连同子目录都进行更改。

4.5.4"chmod 755 -R /usr/local/lib/jdk1.7.0_40"

chmod命令,更改目录和文件的模式。本命令将jdk1.7.0_40的模式改为拥有者可以读写执行,同组用户和其他用户可读可执行不可写。“-R”参数同上,也是递归的意思。

4.5.5"source /etc/profile"

如果更改了/etc/profile配置文件,它只会在新的终端里生效,现在正在使用的终端是不会生效的。如果想让它在正使用的终端也生效,需要用source命令运行一下配置文件。这条命令会让4.4.2的三个环境变量立即生效。这条命令也可以简写成”./etc/profile”

4.5.6"java -version"

这条命令检查jdk安装是否成功。运行这条命令,只要没有报错就表明安装成功了。

5.安装hadoop

5.1"su brian"

su命令,切换用户。安装jdk用的是root用户。现在切回brian用户。

5.2"mkdir -p ~/usr/hadoop"

创建Hadoop的安装目录

5.3"cd ~/usr/hadoop"

5.4"tar -xvzf ~/setup/hadoop/hadoop-1.2.1.tar.gz"

解压缩完毕后,就有目录~/usr/hadoop/hadoop-1.2.1,这是hadoop的主目录。

5.5配置hadoop,参考了http://hadoop.apache.org/docs/stable/single_node_setup.pdf

按照伪分布式进行配置,也就是用一个机器同时运行NameNode,SecondaryNameNode, DataNode, JobTracker, TaskTracker 5个任务。

5.5.1配置文件在~/usr/hadoop/hadoop-1.2.1/conf/目录下

5.5.2core-site.xml文件内容修改成如下:

<configuration>

<property>

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

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

</property>

</configuration>

5.5.3mapred-site.xml文件内容修改如下:

<configuration>

<property>

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

<value>localhost:9001</value>

</property>

</configuration>

5.5.4hdfs-site.xml文件内容修改如下:

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

5.5.5hadoop-env.sh文件里添加如下一条语句:

exportJAVA_HOME=/usr/local/lib/jdk1.7.0_40

6.安装rsyncssh

6.1"sudo apt-get install ssh rsync"

这条命令安装sshrsyncssh是一个很著名的安全外壳协议SecureShell Protocolrsync是文件同步命令行工具。

6.2配置ssh免登录

6.2.1"ssh-keygen -t dsa -f ~/.ssh/id_dsa"

执行这条命令生成ssh的公钥/私钥,执行过程中,会一些提示让输入字符,直接一路回车就可以。

6.2.2"cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys"

ssh进行远程登录的时候需要输入密码,如果用公钥/私钥方式,就不需要输入密码了。上述方式就是设置公钥/私钥登录。

6.2.3 “ssh localhost”

第一次执行本命令,会出现一个提示,输入”yes”然后回车即可。

7.启动hadoop

7.1"cd ~/usr/hadoop/hadoop-1.2.1"

7.2"./bin/hadoop namenode -format"

格式化NameNode

7.3"./bin/start-all.sh"

启动所有节点,包括NameNode,SecondaryNameNode, JobTracker, TaskTracker, DataNode

7.4“jps”

检查各进程是否运行,这时,应该看到有6java虚拟机的进程,分别是Jps,NameNode, SecondaryNameNode, DataNode, JobTracker,TaskTracker,看到6个是对的,表明启动成功。如果提示”jps”没安装或者找不到,执行一次”source/etc/profile”即可。

8.测试hadoop

8.1"cd ~/usr/hadoop/hadoop-1.2.1"

8.2"./bin/hadoop fs -put README.txt readme.txt"

将当前目录下的README.txt放到hadoop进行测试,这个README.txtHadoop的介绍文件,这里用它做测试。这条命令将README.txt文件复制到Hadoop的分布式文件系统HDFS,重命名为readme.txt

8.3"./bin/hadoop jar hadoop-examples-1.2.1.jar wordcount readme.txtoutput"

运行hadoopexampleswordcount,测试hadoop的执行。这条语句用Hadoop自带的examples里的wordcount程序,对readme.txt进行处理,处理后的结果放到HDFSoutput目录。

8.4"./bin/hadoop fs -cat output/part-r-00000"

这条命令查看处理结果,part-r-00000文件存放wordcount的运行结果,cat命令将文件内容输出到屏幕,显示字符的统计结果。这是一个简单的字符统计,wordcount只是做了简单的处理,所以会看到单词后面有标点符号。


9. 练习

笔者做一次完整的安装是50分钟左右,其中下载Hadoop安装包和JavaJDK安装包是半小时,操作部分用时20分钟。新手第一次安装,2~5个小时内完成都是正常的。建议将Hadoop的安装过程按照上述流程走上三遍,熟悉每个步骤,然后不看流程凭记忆做出来,重复练习多次次,以加深印象。如果再有时间的话,可以逐个研究里面涉及到的各种命令,诸如wget,ssh, rsync等等。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402179.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vim使用—实现程序的自动补齐(C语言)

使用过Source Insight的人一定对它的自动补全功能印象深刻&#xff0c;在很多的集成开发环境中&#xff0c;也都支持自动补全。vim做为一个出色的编辑器&#xff0c;这样的功能当然少不了。至于如何实现程序自动补全&#xff0c;网上教程很多。这里&#xff0c;我将自己配置过程…

8、JDBC入门整理

JDBC入门 l 导jar包&#xff1a;驱动&#xff01; l 加载驱动类&#xff1a;Class.forName(“类名”); l 给出url、username、password&#xff0c; l 使用DriverManager类来得到Connection对象&#xff01; 1 什么是JDBC(接口,实现为驱动) JDBC&#xff08;Java DataBase…

Python 爬虫利器二之 Beautiful Soup 的用法

上一节我们介绍了正则表达式&#xff0c;它的内容其实还是蛮多的&#xff0c;如果一个正则匹配稍有差池&#xff0c;那可能程序就处在永久的循环之中&#xff0c;而且有的小伙伴们也对写正则表达式的写法用得不熟练&#xff0c;没关系&#xff0c;我们还有一个更强大的工具&…

[C#]Attribute特性(3)——AttributeUsage特性和特性标识符

相关文章 [C#]Attribute特性 [C#]Attribute特性(2)——方法的特性及特性参数 AttributeUsage特性 除了可以定制自己的特性来注释常用的C#类型外&#xff0c;您可以用AttributeUsage特性来定义您想怎样使用这些特性。AttributeUsage特性采用如下的调用惯例&#xff1a; 1 [Attri…

Linux 命令 ——less命令

less 工具也是对文件或其它输出进行分页显示的工具&#xff0c;应该说是linux正统查看文件内容的工具&#xff0c;功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候&#xff0c;我们并没有办法向前面翻&#xff0c; 只能往后面看&#xff0c;但若使用了 less …

Python 爬虫利器三之 Xpath 语法与 lxml 库的用法

原文链接https://cuiqingcai.com/2621.html 前言 前面我们介绍了 BeautifulSoup 的用法&#xff0c;这个已经是非常强大的库了&#xff0c;不过还有一些比较流行的解析库&#xff0c;例如 lxml&#xff0c;使用的是 Xpath 语法&#xff0c;同样是效率比较高的解析方法。如果大…

android闹钟实现原理

闹钟的原理可用下面我自己画的一幅图来概括&#xff1a;&#xff08;不对的地方&#xff0c;尽管吐槽&#xff09; 我们来看看新建闹钟到闹钟响铃的步骤&#xff1a; 1、新建一个闹钟&#xff1a; ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22…

将openstack的Token认证信息存储在memcache中

公司线上的openstack环境运行了5个多月的时间&#xff0c;keystone库的token表已经增长到了31GB&#xff0c;这个数据量还是很大的&#xff0c;对于以后的数据库备份很不方便。每次管理openstack的时候&#xff0c;都会产生一个新的token验证&#xff0c;而历史token信息其实都…

Linux 下shell编程

什么是shell?Shell是一个命令解析器&#xff0c;是介于Linux操作系统的内核(kernel)与用户之间的一个绝缘层。shell脚本就是讲各类命令预先放入其中&#xff0c;方便一次性执行的一个程序文件&#xff0c;主要用于方便管理员进行设置或者管理。 序员的角度来看&#xff0c; Sh…

lxml学习【未完成】

链接 https://www.jianshu.com/p/e084c2b2b66d 官方教程

构建之法第四章--两人合作

两人合作 这一章主要讲述代码规范&#xff0c;极限编程&#xff0c;结对编程&#xff0c;两人合作的不同阶段&#xff0c;影响他人的技巧。 这一章主要介绍代码的规范和代码复审&#xff0c;这个也是我们在编码过程中需要注意的&#xff0c;这样既可以方便别人&#xff0c;也方…

Linux环境变量的设置和查看

环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数&#xff0c;比如临时文件夹位置和系统文件夹位置等等。 一、Linux的变量种类 按变量的生存周期来划分&#xff0c;Linux变量可分为两类&#xff1a; 1、永久的&#xff1a;需要修改配置文件&#xff0c;变量永…

datastage 重启 续

在重启DS时&#xff0c;不少人肯定会说&#xff0c;一定要在重启之前确认没有人连接DS了。但有时会忘的。虽然说&#xff0c;等一些时间&#xff0c;系统可能会释放死进程&#xff0c;但也有可能&#xff0c;不会。而重启服务器&#xff0c;对于生产系统&#xff0c;可不是那么…

Python urllib、urllib2、urllib3

相关链接&#xff1a; 《Python urllib、urllib2、urllib3用法及区别》 《urllib2库.官方文档翻译》 《urllib3官方文档》 《urllib3的基本用法》 《详解 python3 urllib》

linux 目录/sys 解析

今天学习Linux目录时&#xff0c;遇到/sys这个目录&#xff0c;老师怎么讲的&#xff0c;不太清楚&#xff0c;先对/sys目录知识进行一个整理 首先&#xff0c;对 /sys目录下的各个子目录进行具体说明&#xff1a; /sys下的子目录 内容 /sys/devices 该目录下…

南下事业篇——深圳 深圳(回顾)

2019独角兽企业重金招聘Python工程师标准>>> 二0一二年三月二十三号记录了下面的一篇日志&#xff0c;现在回味一下觉得自己有点惭愧&#xff0c;但不后悔&#xff0c;知道的越多就越了解自己的无知&#xff0c;工作之后渐渐磨灭了许多锐气&#xff0c;变得平滑低调…

php中花括号的使用

一、界定变量名 注&#xff1a;花括号内若左侧出现空格&#xff0c;则会当做普通花括号来解析。 二、界定表达式 1.获取字符串中某个字符 如&#xff1a;$strabcdefg; echo $str{0};//a 效果等同于$str[0]; 2.作为表示下标的方法定义数组 如&#xff1a;$arr []; $arr{10}4;…

Linux目录/bin、/sbin、/usr/bin、/usr/sbin的区别

/bin、/sbin、/usr/bin、/usr/sbin目录的区别在linux下我们经常用到的四个应用程序的目录是/bin、/sbin、/usr/bin、/usr/sbin 。而四者存放的文件一般如下&#xff1a;/bin: bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mk…

游戏开发--开源软件8--cyclone2D(手机引擎+设计工具)

2019独角兽企业重金招聘Python工程师标准>>> Cyclone2D (飓风软件)是集成的手机游戏设计工具以及开源的引擎&#xff0c;工具提供了强大的动画、地图、数值、脚本等设计功能&#xff0c;开源引擎提供了一体化的模块加载与管理&#xff0c;并提供了详细的API文档以及…

python编码

https://www.cnblogs.com/xiao-xue-di/p/11283496.html 《Python中的Unicode编码和UTF-8编码》 《字符串和编码》 《python编码转换(unicode / utf8 / gbk / 内部编码)》 字符编码 最早127个字母被编码到计算机里&#xff0c;也就是大小写英文字母、数字和一些符号&#xff0…