单节点hadoop_Hadoop单节点设置

本文详述了如何在单节点上设置Apache Hadoop,包括先决条件(Java安装)、创建Hadoop用户、启用SSH访问,以及配置和运行单节点Hadoop集群。通过这个过程,你可以熟悉Hadoop的操作和调试,尽管性能有限。
摘要由CSDN通过智能技术生成

单节点hadoop

通过这篇文章,我希望分享在单节点中设置Apache Hadoop的过程。 Hadoop用于处理在低成本商品硬件上进行部署的大数据集。 它是一个map-reduce框架,它在群集中的节点之间映射作业的分段以执行。 尽管我们看不到Hadoop在单节点上运行的确切功能,但这是迈向多节点集群的第一步。 单节点设置对于熟悉操作和调试应用程序的准确性很有用,但是性能可能远低于可达到的水平。

我正在共享Linux系统上要遵循的步骤,因为它既是Hadoop的开发平台又是生产平台,都受到支持。 Win32仅作为开发平台受支持,并且必须遵循给定Linux命令的等效命令。 该Hadoop文档简要介绍了设置Hadoop的详细信息。 我在这里与以下人员分享有关设置过程的详细指南。

  • 先决条件
  • Hadoop配置
  • 运行单节点群集
  • 运行Map-reduce作业


先决条件

Java 1.6.X

为了运行Hadoop,因为它是基于Java的框架,因此需要在节点中安装Java。 我们可以通过以下方式检查node的Java安装:

pushpalanka@pushpalanka-laptop:~$ java -version
java version '1.6.0_23'
Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
Java HotSpot(TM) Server VM (build 19.0-b09, mixed mode)

如果未提供预期的输出,则需要通过运行以下命令来安装Java:

pushpalanka@pushpalanka-laptop:~$ sudo apt-get install sun-java6-jdk

或运行下载的二进制Java安装程序包 。 然后在相关的配置文件(对于Linux bash shell用户为.bashrc)中设置环境变量JAVA_HOME。

创建一个Hadoop用户

在这一步,我们创建一个专用于Hadoop安装的用户帐户。 这不是“必须做”的步骤,但出于安全原因和易于管理节点的考虑而建议这样做。 因此,我们创建了一个名为“ hadoop”的组,并使用以下命令将一个新用户添加到名为“ hpuser”的组(名称可以由我们选择)。

pushpalanka@pushpalanka-laptop:~$ sudo addgroup hadoop
pushpalanka@pushpalanka-laptop:~$ sudo adduser --ingroup hadoop hpuser
pushpalanka@pushpalanka-laptop:~$ su hpuser
hpuser@pushpalanka-laptop:~$

现在,我们将以hpuser作为最后一个命令。

启用S​​SH访问

Hadoop要求通过SSH(安全外壳)访问它用作节点的计算机。 这是为了创建安全的通道来交换数据。 因此,即使在单节点中,本地主机也需要hpuser的SSH访问权限,以便为Hadoop操作交换数据。 参考

如果您需要有关SSH的更多详细信息,请参阅此文档

我们可以使用以下命令安装SSH。

hpuser@pushpalanka-laptop:~$ sudo apt-get install ssh

现在,让我们尝试在不使用密码的情况下对localhost进行SSH。

hpuser@pushpalanka-laptop:~$ ssh localhost
Linux pushpalanka-laptop 2.6.32-33-generic #72-Ubuntu SMP Fri Jul 29 21:08:37 UTC 2011 i686 GNU/Linux
Ubuntu 10.04.4 LTS

Welcome to Ubuntu!
................................................

如果未提供与上述类似的信息,则必须启用对localhost的SSH访问,如下所示。

生成没有密码的RSA密钥对。 (我们不仅仅使用密码,因为这样做会在每次Hadoop与节点通信时提示我们提供密码。)

hpuser@pushpalanka-laptop:~$ssh-keygen -t rsa -P ''

然后,我们需要将生成的公共密钥连接到本地主机的授权密钥列表中。 如下进行。 然后确保“ ssh localhost”成功。

hpuser@pushpalanka-laptop:~$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

现在,我们准备迁移到Hadoop。 :)使用Hadoop站点的最新稳定版本,而我使用hadoop-1.0.3。

Hadoop配置

设置Hadoop主页

在本文开头设置JAVA_HOME时,我们也需要设置HADOOP_HOME。 打开相同的文件(.bashrc),并在末尾添加以下两行。

export HADOOP_HOME=<absolute path to the extracted hadoop distribution>
export PATH=$PATH:$HADOOP_HOME/bin


禁用IPv6

由于在Hadoop集群内部对IPv6寻址将没有任何实际需要,因此我们将其禁用为不易出错。 打开文件HADOOP_HOME / conf / hadoop-env.sh并添加以下行。

export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true


设置路径和配置

在同一hadoop-env.sh文件中,也添加JAVA_HOME。

export JAVA_HOME=<path to the java installation>

然后我们需要创建一个目录以用作HDFS(Hadoop分布式文件系统)。在您选择的位置创建目录,并确保目录的所有者为``hpuser''。 我将其称为“ temp_directory”。 我们可以做到的

hpuser@pushpalanka-laptop:~$ sudo chown hpuser:hadoop <absolute path to temp_directory>

现在,在相关文件的<configuration>……</ configuration>标记内添加以下属性段。

conf / core-site.xml

<property>
  <name>hadoop.tmp.dir</name>
  <value>path to temp_directory</value>
  <description>Location for HDFS.</description>
</property>

<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:54310</value>
  <description>The name of the default file system.  A URI whose
  scheme and authority determine the FileSystem implementation. </description>
</property>

conf / mapred-site.xml

<property>
  <name>mapred.job.tracker</name>
  <value>localhost:54311</value>
  <description>The host and port that the MapReduce job tracker runs
  at. </description>
</property>

conf / hdfs-site.xml

<property>
  <name>dfs.replication</name>
  <value>1</value>
  <description>Default number of block replications.
   </description>
</property>

上述值需要根据速度,空间和容错因素的优先级来确定。

格式化HDFS

每次我们创建新的Hadoop集群时都需要执行此操作。 如果我们在正在运行的集群上执行此操作,所有数据将丢失。这基本上是在集群的本地文件系统上创建Hadoop分布式文件系统。

hpuser@pushpalanka-laptop:~$ <HADOOP_HOME>/bin/hadoop namenode -format
12/09/20 14:39:56 INFO
namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = pushpalanka-laptop/127.0.1.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 1.0.3
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r
1335192; compiled by 'hortonfo' on Tue May 8 20:31:25 UTC 2012
************************************************************/
...
12/09/20 14:39:57 INFOnamenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at pushpalanka-laptop/127.0.1.1
************************************************************/

如果输出是上述内容,则HDFS成功格式化。 现在我们快完成了,并准备好查看操作了。

运行单节点群集

hpuser@pushpalanka-laptop:~/hadoop-1.0.3/bin$ ./start-all.sh

你会看到,

hpuser@pushpalanka-laptop:~/hadoop-1.0.3/bin$ ./start-all.sh 
starting namenode, logging to /home/hpuser/hadoop-1.0.3/libexec/../logs/hadoop-hpuser-namenode-pushpalanka-laptop.out
localhost: starting datanode, logging to /home/hpuser/hadoop-1.0.3/libexec/../logs/hadoop-hpuser-datanode-pushpalanka-laptop.out
localhost: starting secondarynamenode, logging to /home/hpuser/hadoop-1.0.3/libexec/../logs/hadoop-hpuser-secondarynamenode-pushpalanka-laptop.out
starting jobtracker, logging to /home/hpuser/hadoop-1.0.3/libexec/../logs/hadoop-hpuser-jobtracker-pushpalanka-laptop.out
localhost: starting tasktracker, logging to /home/hpuser/hadoop-1.0.3/libexec/../logs/hadoop-hpuser-tasktracker-pushpalanka-laptop.out

启动几个节点和跟踪器。 我们可以使用Java中的jps工具观察这些Hadoop进程。

hpuser@pushpalanka-laptop:~/hadoop-1.0.3/bin$ jps
5767 NameNode
6619 Jps
6242 JobTracker
6440 TaskTracker
6155 SecondaryNameNode
5958 DataNode

我们还可以检查Hadoop配置为监听的端口,

hpuser@pushpalanka-laptop:~/hadoop-1.0.3/bin$ sudo netstat -plten | grep java
[sudo] password for hpuser: 
tcp        0      0 0.0.0.0:33793           0.0.0.0:*               LISTEN      1001       175415      8164/java       
....      
tcp        0      0 0.0.0.0:60506           0.0.0.0:*               LISTEN      1001       174566      7767/java       
tcp        0      0 0.0.0.0:50075           0.0.0.0:*               LISTEN      1001       176269      7962/java

有几种Web界面可用于观察内部行为,作业完成,内存消耗等,如下所示。

  • http:// localhost:50070 / – NameNode的Web UI
  • http:// localhost:50030 / – JobTracker的Web UI
  • http:// localhost:50060 / – TaskTracker的Web UI
    目前,这不会显示任何信息,因为我们没有执行任何作业来观察进度。

我们可以使用以下命令随时停止集群。

hpuser@pushpalanka-laptop:~/hadoop-1.0.3/bin$ ./stop-all.sh 
stopping jobtracker
localhost: stopping tasktracker
stopping namenode
localhost: stopping datanode
localhost: stopping secondarynamenode


运行地图缩减作业

让我们尝试使用Hadoop完成一些工作。 我们可以使用随Hadoop一起分发的单词计数示例,如Hadoop Wiki上此处所述。 简而言之,它的工作是将一些文本文件作为输入,计算将每行映射到映射器的不同单词的重复次数,并将简化后的结果输出为文本文件。

首先创建一个文件夹,然后复制一些包含10000个单词的.txt文件。 我们将计算这些单词的重复次数。

hpuser@pushpalanka-laptop:~/tempHadoop$ ls -l
total 1392
-rw-r--r-- 1 hpuser hadoop 1423810 2012-09-21 02:10 pg5000.txt

然后像以前一样使用start-all.sh文件重新启动群集。

将样本输入文件复制到HDFS。

hpuser@pushpalanka-laptop:~/hadoop-1.0.3$ bin/hadoop dfs -copyFromLocal /home/hpuser/tempHadoop/ /user/hpuser/testHadoop

让我们检查一下是否正确复制了HDFS,

hpuser@pushpalanka-laptop:~/hadoop-1.0.3$ bin/hadoop dfs -ls /user/hpuser/testHadoop
Found 1 items
-rw-r--r--   1 hpuser supergroup    1423810 2012-09-21 02:17 /user/hpuser/testHadoop/pg5000.txt

现在输入已准备就绪。 让我们运行map reduce作业。 为此,我们使用随Hadoop一起分发的jar来完成有需要的编写,以后可以参考并了解事情的完成方式。

hpuser@pushpalanka-laptop:~/hadoop-1.0.3$ bin/hadoop jar hadoop*examples*.jar wordcount /user/hpuser/testHadoop /user/hpuser/testHadoop-output
12/09/21 02:24:34 INFO input.FileInputFormat: Total input paths to process : 1
12/09/21 02:24:34 INFO util.NativeCodeLoader: Loaded the native-hadoop library
12/09/21 02:24:34 WARN snappy.LoadSnappy: Snappy native library not loaded
12/09/21 02:24:34 INFO mapred.JobClient: Running job: job_201209210216_0003
12/09/21 02:24:35 INFO mapred.JobClient:  map 0% reduce 0%
12/09/21 02:24:51 INFO mapred.JobClient:  map 100% reduce 0%
12/09/21 02:25:06 INFO mapred.JobClient:  map 100% reduce 100%
12/09/21 02:25:11 INFO mapred.JobClient: Job complete: job_201209210216_0003
12/09/21 02:25:11 INFO mapred.JobClient: Counters: 29
12/09/21 02:25:11 INFO mapred.JobClient:   Job Counters 
12/09/21 02:25:11 INFO mapred.JobClient:     Launched reduce tasks=1
12/09/21 02:25:11 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=17930
12/09/21 02:25:11 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0
12/09/21 02:25:11 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0
12/09/21 02:25:11 INFO mapred.JobClient:     Launched map tasks=1
12/09/21 02:25:11 INFO mapred.JobClient:     Data-local map tasks=1
12/09/21 02:25:11 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=14153
12/09/21 02:25:11 INFO mapred.JobClient:   File Output Format Counters 
12/09/21 02:25:11 INFO mapred.JobClient:     Bytes Written=337639
12/09/21 02:25:11 INFO mapred.JobClient:   FileSystemCounters
12/09/21 02:25:11 INFO mapred.JobClient:     FILE_BYTES_READ=466814
12/09/21 02:25:11 INFO mapred.JobClient:     HDFS_BYTES_READ=1423931
12/09/21 02:25:11 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=976811
12/09/21 02:25:11 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=337639
12/09/21 02:25:11 INFO mapred.JobClient:   File Input Format Counters 
12/09/21 02:25:11 INFO mapred.JobClient:     Bytes Read=1423810
12/09/21 02:25:11 INFO mapred.JobClient:   Map-Reduce Framework
12/09/21 02:25:11 INFO mapred.JobClient:     Map output materialized bytes=466814
12/09/21 02:25:11 INFO mapred.JobClient:     Map input records=32121
12/09/21 02:25:11 INFO mapred.JobClient:     Reduce shuffle bytes=466814
12/09/21 02:25:11 INFO mapred.JobClient:     Spilled Records=65930
12/09/21 02:25:11 INFO mapred.JobClient:     Map output bytes=2387668
12/09/21 02:25:11 INFO mapred.JobClient:     CPU time spent (ms)=9850
12/09/21 02:25:11 INFO mapred.JobClient:     Total committed heap usage (bytes)=167575552
12/09/21 02:25:11 INFO mapred.JobClient:     Combine input records=251352
12/09/21 02:25:11 INFO mapred.JobClient:     SPLIT_RAW_BYTES=121
12/09/21 02:25:11 INFO mapred.JobClient:     Reduce input records=32965
12/09/21 02:25:11 INFO mapred.JobClient:     Reduce input groups=32965
12/09/21 02:25:11 INFO mapred.JobClient:     Combine output records=32965
12/09/21 02:25:11 INFO mapred.JobClient:     Physical memory (bytes) snapshot=237834240
12/09/21 02:25:11 INFO mapred.JobClient:     Reduce output records=32965
12/09/21 02:25:11 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=778846208
12/09/21 02:25:11 INFO mapred.JobClient:     Map output records=251352

如果我们尝试使用前面提到的Web界面,则在运行作业时,我们可以以汇总方式观察资源的进度和利用率。 如命令中所给,带有单词计数的输出文件被写入“ / user / hpuser / testHadoop-output”。

hpuser@pushpalanka-laptop:~/hadoop-1.0.3$ bin/hadoop dfs -ls /user/hpuser/testHadoop-output
Found 3 items
-rw-r--r--   1 hpuser supergroup          0 2012-09-21 02:25 /user/hpuser/testHadoop-output/_SUCCESS
drwxr-xr-x   - hpuser supergroup          0 2012-09-21 02:24 /user/hpuser/testHadoop-output/_logs
-rw-r--r--   1 hpuser supergroup     337639 2012-09-21 02:25 /user/hpuser/testHadoop-output/part-r-00000

要查看文件内部内容,让我们将其复制到本地文件系统中。

hpuser@pushpalanka-laptop:~/hadoop-1.0.3$ bin/hadoop dfs -getmerge /user/hpuser/testHadoop-output /home/hpuser/tempHadoop/out 
12/09/21 02:38:10 INFO util.NativeCodeLoader: Loaded the native-hadoop library

如果有多个文件,此处的getmerge选项用于合并,然后给出输出文件夹的HDFS位置以及在本地文件系统中输出所需的位置。 现在,您可以浏览到给定的输出文件夹并打开结果文件,根据您的输入文件,结果文件将如下所示。

"1      1
'1,'    1
'35'    1
'58,'   1
'AS'.   1
'Apple  1
'Abs    1
'Ah!    1

现在,我们已经完成了使用Apache Hadoop设置单节点集群并运行map-reduce作业的过程。 在下一篇文章中,我将分享如何设置多节点集群。

原始资料

Hadoop单节点设置– Guchex 。 普希帕兰卡(Pushpalanka Jayawardhana)

参考: Pushpalanka博客博客中的JCG合作伙伴 Pushpalanka提供的Hadoop单节点设置

翻译自: https://www.javacodegeeks.com/2012/11/hadoop-single-node-set-up.html

单节点hadoop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值