Java之美[从菜鸟到高手演练]之Linux下单节点安装Hadoop

作者:二青

邮箱:[email protected]     微博:http://weibo.com/xtfggef

现在开始要系统地学习下Hadoop了,虽然可能有点儿晚,但是还是想好好学习一下这门火爆的技术,让我们从安装环境开始。官方文档

本文使用的个软件及版本如下:

  • Ubuntu 14.10 64 Bit Server Edition
  • Hadoop2.6.0
  • JDK 1.7.0_71
  • ssh
  • rsync

首先自己准备一个装有linux系统的机器,物理机虚拟机都可,推荐使用Oracle VirtualBox 搭建一个虚拟机。本文使用Window7+VirtualBox+Ubuntu 14.10 64 Server Edition。

去Apache首页下载一个Hadoop镜像(Apache Hadoop Mirror)。去Oracle官网下载JDK(JDK 下载)。

1. 搭建基础环境,下载Hadoop和JDK安装包

2. 使用Putty登录Ubuntu

执行下面两行命令安装ssh和rsync

$ sudo apt-get install ssh
$ sudo apt-get install rsync

3. 使用WinSCP将下载好的Hadoop和JDK压缩包传入Ubuntu

使用tar -zxvf xxx.tar.gz 分别解压两个包,并拷贝到/opt目录下。

4. 配置Java环境

root权限打开/etc/profile文件,在末尾加上:

JAVA_HOME=/opt/jdk1.7.17
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export JAVA_HOME PATH CLASSPATH

执行.  /etc/profile可使profile修改后立即生效。(注意.后面的空格)
其实这段配置的目的就是设置PATH和CLASSPATH,与我们在windows下设置环境变量是一致的。之后用javac或者java -version测试下,看成功没有。

5. 配置Hadoop

将解压的包拷贝到/opt后,要对hadoop进行简单的配置。

编辑etc/hadoop/hadoop-env.sh,添加如下配置:

# set to the root of your Java installation
export JAVA_HOME=/opt/jdk1.7.0_71
# Assuming your installation directory is /opt/hadoop-2.6.0
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/opt/hadoop-2.6.0"}

完成这步,hadoop就简单的配置好了,我们可以进行深入一点儿的配置开启不同模式。

  • 独立模式
  • 为分布式
  • 完全分布式

这里我们将要配置成为伪分布式去使用,单节点的伪分布式表示每个hadoop守护进程单独运行于一个Java进程。

1. 编辑配置文件etc/hadoop/core-site.xml,etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

2. 对localhost设置无密钥ssh连接

如果失败,使用如下命令:

$ ssh-keygen -t dsa -P ‘‘ -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

3. 执行

执行.hdfs namenode -format

[email protected]:/opt/hadoop-2.6.0/bin$ ./hdfs namenode -format
15/01/11 11:37:08 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = ubuntu/127.0.1.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 2.6.0
STARTUP_MSG:   classpath = /opt/hadoop-2.6.0/etc/hadoop:/opt/hadoop-2.6.0/share/hadoop/common/lib/slf4j-logre/hadoop/common/lib/jsr305-1.3.9.jar:/opt/hadoop-2.6.0/share/hadoop/common/lib/jaxb-api-2.2.2.jar:/opt/hadtpcore-4.2.5.jar:/opt/hadoop-2.6.0/share/hadoop/common/lib/jackson-jaxrs-1.9.13.jar:/opt/hadoop-2.6.0/share.jar:/opt//lib/commons-el-1.0.jar:/opt/hapacheds-i18n-2.0.0-M15.jar:/opt/hadoop-2.6.0/share/hadoop/common/lib/xmlenc-0.52.jar:/opt/hadoop-2.6.0/shaar:/opt/hadoop-
...
...
STARTUP_MSG:   build = https://git-wip-us.apache.org/repos/asf/hadoop.git -r e3496499ecb8d220fba99dc5ed4c99 2014-11-13T21:10Z
STARTUP_MSG:   java = 1.7.0_71
************************************************************/
15/01/11 11:37:08 INFO namenode.NameNode: registered UNIX signal handlers for [TERM, HUP, INT]
15/01/11 11:37:08 INFO namenode.NameNode: createNameNode [-format]
Formatting using clusterid: CID-6645a7aa-b5c4-4b8c-a0b7-ece148452be5
15/01/11 11:37:10 INFO namenode.FSNamesystem: No KeyProvider found.
15/01/11 11:37:10 INFO namenode.FSNamesystem: fsLock is fair:true
15/01/11 11:37:10 INFO blockmanagement.DatanodeManager: dfs.block.invalidate.limit=1000
15/01/11 11:37:10 INFO blockmanagement.DatanodeManager: dfs.namenode.datanode.registration.ip-hostname-chec
15/01/11 11:37:10 INFO blockmanagement.BlockManager: dfs.namenode.startup.delay.block.deletion.sec is set t
15/01/11 11:37:10 INFO blockmanagement.BlockManager: The block deletion will start around 2015 Jan 11 11:37
15/01/11 11:37:10 INFO util.GSet: Computing capacity for map BlocksMap
15/01/11 11:37:10 INFO util.GSet: VM type       = 64-bit
15/01/11 11:37:10 INFO util.GSet: 2.0% max memory 966.7 MB = 19.3 MB
15/01/11 11:37:10 INFO util.GSet: capacity      = 2^21 = 2097152 entries
15/01/11 11:37:10 INFO blockmanagement.BlockManager: dfs.block.access.token.enable=false
15/01/11 11:37:10 INFO blockmanagement.BlockManager: defaultReplication         = 1
15/01/11 11:37:10 INFO blockmanagement.BlockManager: maxReplication             = 512
15/01/11 11:37:10 INFO blockmanagement.BlockManager: minReplication             = 1
15/01/11 11:37:10 INFO blockmanagement.BlockManager: maxReplicationStreams      = 2
15/01/11 11:37:10 INFO blockmanagement.BlockManager: shouldCheckForEnoughRacks  = false
15/01/11 11:37:10 INFO blockmanagement.BlockManager: replicationRecheck
15/01/11 11:37:10 INFO blockmanagement.BlockManager: encryptDataTransfe
15/01/11 11:37:10 INFO blockmanagement.BlockManager: maxNumBlocksToLog
15/01/11 11:37:10 INFO namenode.FSNamesystem: fsOwner             = ada
15/01/11 11:37:10 INFO namenode.FSNamesystem: supergroup          = sup
15/01/11 11:37:10 INFO namenode.FSNamesystem: isPermissionEnabled = tru
15/01/11 11:37:10 INFO namenode.FSNamesystem: HA Enabled: false
15/01/11 11:37:10 INFO namenode.FSNamesystem: Append Enabled: true
15/01/11 11:37:11 INFO util.GSet: Computing capacity for map INodeMap
15/01/11 11:37:11 INFO util.GSet: VM type       = 64-bit
15/01/11 11:37:11 INFO util.GSet: 1.0% max memory 966.7 MB = 9.7 MB
15/01/11 11:37:11 INFO util.GSet: capacity      = 2^20 = 1048576 entrie
15/01/11 11:37:11 INFO namenode.NameNode: Caching file names occuring m
15/01/11 11:37:11 INFO util.GSet: Computing capacity for map cachedBloc
15/01/11 11:37:11 INFO util.GSet: VM type       = 64-bit
15/01/11 11:37:11 INFO util.GSet: 0.25% max memory 966.7 MB = 2.4 MB
15/01/11 11:37:11 INFO util.GSet: capacity      = 2^18 = 262144 entries
15/01/11 11:37:11 INFO namenode.FSNamesystem: dfs.namenode.safemode.thr
15/01/11 11:37:11 INFO namenode.FSNamesystem: dfs.namenode.safemode.min
15/01/11 11:37:11 INFO namenode.FSNamesystem: dfs.namenode.safemode.ext
15/01/11 11:37:11 INFO namenode.FSNamesystem: Retry cache on namenode i
15/01/11 11:37:11 INFO namenode.FSNamesystem: Retry cache will use 0.03
15/01/11 11:37:11 INFO util.GSet: Computing capacity for map NameNodeRe
15/01/11 11:37:11 INFO util.GSet: VM type       = 64-bit
15/01/11 11:37:11 INFO util.GSet: 0.029999999329447746% max memory 966.
15/01/11 11:37:11 INFO util.GSet: capacity      = 2^15 = 32768 entries
15/01/11 11:37:11 INFO namenode.NNConf: ACLs enabled? false
15/01/11 11:37:11 INFO namenode.NNConf: XAttrs enabled? true
15/01/11 11:37:11 INFO namenode.NNConf: Maximum size of an xattr: 16384
15/01/11 11:37:11 INFO namenode.FSImage: Allocated new BlockPoolId: BP-
15/01/11 11:37:11 INFO common.Storage: Storage directory /tmp/hadoop-ad
15/01/11 11:37:11 INFO namenode.NNStorageRetentionManager: Going to ret
15/01/11 11:37:11 INFO util.ExitUtil: Exiting with status 0
15/01/11 11:37:11 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ubuntu/127.0.1.1
************************************************************/
[email protected]:/opt/hadoop-2.6.0/bin$

启动NameNode守护进程

将目录切换到hadoop/sbin下执行:./start-dfs.sh

[email protected]:/opt/hadoop-2.6.0/sbin$ ./start-dfs.sh
Starting namenodes on [localhost]
[email protected]‘s password:
localhost: starting namenode, logging to /opt/hadoop-2.6.0/logs/hadoop-adam-namenode-ubuntu.out
[email protected]‘s password:
localhost: starting datanode, logging to /opt/hadoop-2.6.0/logs/hadoop-adam-datanode-ubuntu.out
Starting secondary namenodes [0.0.0.0]
[email protected]‘s password:
0.0.0.0: starting secondarynamenode, logging to /opt/hadoop-2.6.0/logs/hadoop-adam-secondarynamenode-ubuntu.out
[email protected]:/opt/hadoop-2.6.0/sbin$

这样我们就安装了一个简单的单节点伪分布式的hadoop环境。

时间: 2024-10-11 19:21:00

Java之美[从菜鸟到高手演练]之Linux下单节点安装Hadoop的相关文章

Java之美[从菜鸟到高手演练]之Linux下Hadoop的完全分布式安装

作者:二青 邮箱:[email protected]     微博:http://weibo.com/xtfggef 本来是想安装一个单节点的环境就好了,后来按装完了总觉得不够过瘾,于是今天继续研究一下,来一个完全分布式的集群安装.用到的软件和上一篇单节点安装Hadoop一样,如下: Ubuntu 14.10 64 Bit Server Edition Hadoop2.6.0 JDK 1.7.0_71 ssh rsync 准备环境 依然是VirtualBox + Ubuntu 14.10 64

Java之美[从菜鸟到高手演练]之Linux下shell脚本的使用(一)

作者:二青 个人站点:zhangerqing.cn    邮箱:[email protected]    微博:http://weibo.com/xtfggef Shell脚本就是将很多条命令结合起来写在一起,通过运算以及判断来实现很多功能的文本.为什么学习shell,首先一些常规的系统管理操作,并且需要自动化地执行,如果用shell脚本把这些操作集中在一起,只需要定期的执行这个shell脚本就可以了,其次,对于一些复杂的文本处理,比如日志分析等等,可能需求比较多,单条执行命令不是很方便,因此也

Java之美[从菜鸟到高手演练]之Arrays类及其方法分析

作者:二青 个人站点:zhangerqing.cn    邮箱:[email protected]    微博:http://weibo.com/xtfggef 本章主要介绍一下 java.util.Arrays类的重点方法,包括怎么使用及实现原理.这是一个算法类,主要是辅助数组类实现一些排序.搜索等功能,同时也支持数组到List的转换.本章系Java之美[从菜鸟到高手演练]系列之Arrays类及其方法分析,如果有任何问题,欢迎通过上面任何一种方式与我联系! 排序 本文使用JDK1.8.0_25

Java之美[从菜鸟到高手演练]之JDK动态代理的实现及原理

JDK动态代理的实现及原理 作者:二青 邮箱:[email protected]     微博:http://weibo.com/xtfggef 动态代理,听上去很高大上的技术,在Java里应用广泛,尤其是在Hibernate和Spring这两种框架里,在AOP,权限控制,事务管理等方面都有动态代理的实现.JDK本身有实现动态代理技术,但是略有限制,即被代理的类必须实现某个接口,否则无法使用JDK自带的动态代理,因此,如果不满足条件,就只能使用另一种更加灵活,功能更加强大的动态代理技术-- CG

Java之美[从菜鸟到高手演练]之atomic包的原理及分析

作者:二青 个人站点:zhangerqing.cn    邮箱:[email protected]    微博:http://weibo.com/xtfggef Atomic简介 Atomic包是java.util.concurrent下的另一个专门为线程安全设计的Java包,包含多个原子操作类.这个包里面提供了一组原子变量类.其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像自旋锁

Java之美[从菜鸟到高手演练]之Hadoop常用命令

作者:二青 邮箱:[email protected]     微博:http://weibo.com/xtfggef 这篇文章主要是讲一下位于bin下的hadoop命令,我们可以直接输入hadoop无任何参数看一下: 用法就是:hadoop [---config confdir] COMMAND此处COMMAND就是下面列出来的那些,fs, version,jar 等等. 用户命令 fs 目前版本的hadoop已经摒弃了fs命令,取而代之的是hdfs dfs. Usage: hdfs dfs [

Java之美[从菜鸟到高手演变]之JVM内存管理及垃圾回收

很多Java面试的时候,都会问到有关Java垃圾回收的问题,提到垃圾回收肯定要涉及到JVM内存管理机制,Java语言的执行效率一直被C.C++程序员所嘲笑,其实,事实就是这样,Java在执行效率方面确实很低,一方面,Java语言采用面向对象思想,这也决定了其必然是开发效率高,执行效率低.另一方面,Java语言对程序员做了一个美好的承诺:程序员无需去管理内存,因为JVM有垃圾回收(GC),会去自动进行垃圾回收. 其实不然: 1.垃圾回收并不会按照程序员的要求,随时进行GC. 2.垃圾回收并不会及时

Java之美[从菜鸟到高手演变]之设计模式

设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周

Java之美[从菜鸟到高手演变]之设计模式(zz)

http://blog.csdn.net/zhangerqing/article/details/8194653 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理