ubuntu部署hadoop2.7.1之单机模式与伪分布式模式

前端之家收集整理的这篇文章主要介绍了ubuntu部署hadoop2.7.1之单机模式与伪分布式模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

单机模式(standalone

单机模式是 Hadoop的默认模式。当首次解压 Hadoop的源码包时, Hadoop无法了解硬件安装环境,便保守地选择了最小配置。在这种默认模式下所有 3XML文件均为空。当配置文件为空时, Hadoop会完全运行在本地。因为不需要与其他节点交互,单机模式就不使用 HDFS,也不加载任何 Hadoop的守护进程。该模式主要用于开发调试 MapReduce程序的应用逻辑。
伪分布模式( Pseudo-DistributedMode
伪分布模式在“单节点集群”上运行 Hadoop,其中所有的守护进程都运行在同一台机器上。该模式在单机模式之上增加代码调试功能,允许你检查内存使用情况, HDFS输入输出,以及其他的守护进程交互。
全分布模式( FullyDistributed Mode

Hadoop守护进程运行在一个集群上。

@H_502_91@

@H_502_96@一.ubuntu平台上安装JDK

1.将下载好的tar.gz 文件解压到一个文件夹下。

@H_502_91@

2.然后,配置环境变量。方法如下:

打开终端输入

sudo gedit /etc/profile 
@H_502_91@ @H_502_91@

@H_502_91@

输入密码后可以看到:@H_502_91@

@H_502_91@

@H_502_91@

配置环境变量(在profile文件到最后加上这些代码):@H_502_91@

#set java environment    
    
JAVA_HOME=/home/hadoop/java/jdk1.8.0_05         
    
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH    
    
export PATH=$JAVA_HOME/bin:$PATH 
@H_502_91@ 如下图:

@H_502_91@

@H_502_91@

上面到JAVA_HOME的值是我机器上jdk的文件路径。@H_502_91@

@H_502_91@

@H_502_91@

最后保存文件即可。

为了是环境变量生效,需要注销一下当前用户,重新登录后在终端中输入(验证是否配置成功)

java -version 
@H_502_91@ @H_502_91@

@H_502_91@

@H_502_96@二.部署hadoop之单机模式与伪分布式模式

1. 将下载好的hadoop解压,重新命名为hadoop(这是为了方便以后到操作)。

@H_502_91@

@H_502_91@

进入etc/hadoop文件夹下,在hadoop-env.sh文件中做修改,在第25行左右到位置中有export JAVA_HOME=*******这样到字样,修改JAVA_HOME的值为你机器中jdk到文件路径即可,这里到值和/etc/profile是相同的。@H_502_91@

@H_502_91@

@H_502_91@

现在就可以进行单机模式了(省略)。

2. 伪分布式模式配置

这里需要修改etc/hadoop文件夹中到2个文件(现在可以不启动yarn)。分别是core-site.xml、hdfs-site.xml 两个文件

具体修改内容如下:(file:/home/hadoop/hadoop...,红色部分,系统用户名不同,相应的路径也不同,这里的用户是hadoop)

core-site.xml @H_502_91@
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

@H_502_91@

同样的,修改配置文件 hdfs-site.xml

@H_502_91@

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hadoop/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

@H_502_91@

这样就配置好hadoop了,由于haoop不同结点间到通信是用的ssh,所以我们还需要安装ssh

在ubnuntu下直接在终端中输入

@H_502_91@ @H_502_91@

sudo apt-get install openssh-server
@H_502_91@ @H_502_91@

如果提示找不到源,更新ubuntu到软件中心即可@H_502_91@

sudo apt-get update 
@H_502_91@ 这样就安装完成了ssh。下面需要设置免密钥登录ssh了。输入下面两行代码即可: @H_502_91@

@H_502_91@

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa     
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys  
@H_502_91@ @H_502_91@

@H_502_91@

这样以后登录本地ssh就不需要密码了。

这里稍微解释一下:ssh-keygen代表生成密钥;-t(注意区分大小写)表示指定生成的密钥类型,dsa是dsa密钥认证的意思,即密钥类型;-P用于提供密语;-f指定生成的密钥文件。然后把id_dsa.pub(公钥)追加到授权的key里面去。

完成了部署。 @H_502_91@

@H_502_91@

三.运行wordcount例子

(1)首先格式化namenode并,开启hadoop相关进程(一般启动前把tmp里面的文件全部删除

@H_502_91@

bin/hdfs namenode -format
sbin/start-dfs.sh
(2)查看所有进程

@H_502_91@ @H_502_91@ (3)把本地到hadoop/input (自己建立的)文件夹中到文件上传到hdfs文件系统到input文件夹下

@H_502_91@

bin/hdfs dfs -mkdir /input    
bin/hdfs dfs -put input/* /input 
@H_502_91@ @H_502_91@

查看文件是否上传到hdfs

bin/hdfs dfs -ls /input
@H_502_91@ @H_502_91@

bin/hdfs dfs -cat /input/word
@H_502_91@ @H_502_91@

@H_502_91@ (4)下面即可运行wordcount了@H_502_91@

bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /input /output
@H_502_91@ @H_502_91@

@H_502_91@

(5)查看结果可用下面这条命令@H_502_91@

@H_502_91@

bin/hdfs dfs -cat /output/*
@H_502_91@ @H_502_91@

也可以将运行结果取回到本地:@H_502_91@

rm -r ./output    # 先删除本地的 output 文件夹(如果存在)
bin/hdfs dfs -get /output ./output     # 将 HDFS 上的 output 文件夹拷贝到本机
cat ./output/*

@H_502_91@

@H_502_91@

@H_502_91@ Hadoop 运行程序时,输出目录不能存在,否则会提示错误 "org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists" ,因此若要再次执行,需要执行如下命令删除 output 文件夹: @H_502_91@

@H_502_91@

bin/hdfs dfs -rm -r output 
@H_502_91@

(6)关闭进程@H_502_91@

@H_502_91@

sbin/stop-dfs.sh

猜你在找的Ubuntu相关文章