说明:本文翻译英文地址出自 Hadoop Apache 官方网站,如需参考英文,请参考官网。
1、安装和配置单一节点的Haddop环境。
2、使用Hadoop MapReduce和 HDFS(Hadoop Distributed File System)进行简单操作。
说明:本人操作系统软件信息如下:
#用户信息
[root@HadoopMaster ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
#系统信息
[root@HadoopMaster ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.5 (Tikanga)
# JAVA 信息
[root@HadoopMaster ~]# java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) Client VM (build 20.45-b01, mixed mode, sharing)
[root@HadoopMaster ~]#
如果你的操作系统中没有以上所需的软件你需要参照以下方式进行安装。
以Ubuntu Linux为例:
$ sudo apt-get install ssh $ sudo apt-get install rsync
下载地址:http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
首先,创建Hadoop Base 目录,本人创建在根目录,命名为/hadoop/
#mkdir /hadoop
然后,将下载的Hadoop软件介质从下载地址拷贝到/hadoop目录下,执行命名进行解压。
[root@HadoopMaster hadoop]# mv /download/hadoop-2.6.0.tar.gz /hadoop/hadoop-2.6.0.tar.gz
[root@HadoopMaster hadoop]# tar xvf hadoop-2.6.0.tar.gz
进入到/hadoop/hadoop-2.6.0目录,编辑etc/hadoop/hadoop-env.sh文件,修改以下参数信息
[root@HadoopMaster hadoop]# cd hadoop-2.6.0
[root@HadoopMaster hadoop-2.6.0]# vi etc/hadoop/hadoop-env.sh
#设置Java安装的路径,我的系统Java安装在/hadoop/jdk1.6.0_45目录下,安装Java的时候一定要注意32位还是64位版本。 export JAVA_HOME=/hadoop/jdk1.6.0_45/ # 设置HADOOP安装目录所在目录,本人未在etc/hadoop/hadoop-env.sh文件内找到该说明,所以未进行设置。 export HADOOP_PREFIX=/hadoop
[root@HadoopMaster hadoop-2.6.0]# bin/hadoop Usage: hadoop [--config confdir] COMMAND where COMMAND is one of: fs run a generic filesystem user client version print the version jarrun a jar file checknative [-a|-h] check native hadoop and compression libraries availability distcp copy file or directories recursively archive -archiveName NAME -p * create a hadoop archive classpath prints the class path needed to get the credential interact with credential providers Hadoop jar and the required libraries daemonlog get/set the log level for each daemon trace view and modify Hadoop tracing settings or CLASSNAME run the class named CLASSNAME Most commands print help when invoked w/o parameters. [root@HadoopMaster hadoop-2.6.0]# #以上是hadoop 脚本命令的使用方法,出现上述信息说明安装成功。
现在,你就准备好了,可以使用以下三种模式之一启动你的Hadoop集群了。
默认情况下,Hadoop被配置成单一Java进程运行的非分布式模式,这样很利于调试。
下面的例子拷贝解压的conf目录作为输入来使用,然后查找并显示所有匹配的正则表达式。并将查找结果写入到指定的目录。
[hadoop@HadoopMaster hadoop]$ pwd
/hadoop
[hadoop@HadoopMaster hadoop]$ ls -l[root@HadoopMaster hadoop]# ll
total 260832
drwxr-xr-x 12 hadoop hadoop 4096 Mar 29 19:09 hadoop-2.6.0
-rwxrwxr-x 1 hadoop hadoop 195257604 Mar 29 18:37 hadoop-2.6.0.tar.gz
drwxr-xr-x 8 hadoop grid 4096 Mar 26 2013 jdk1.6.0_45
-rwxr-xr-x 1 hadoop grid 71799552 Nov 26 09:28 jdk-6u45-linux-i586.bin
drwxr-xr-x 2 hadoop grid 16384 Nov 26 08:54 lost+found
$cd hadoop-2.6.0
注:以上命令是本人主机环境,具体如何做根据个人情况执行,做完以上操作,继续以下操作。
$ mkdir input $ cp etc/hadoop/*.xml input $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+' 执行完成,未出现错误的情况下,查看结果。 [hadoop@HadoopMaster hadoop-2.6.0]$ cat output/* [hadoop@HadoopMaster hadoop-2.6.0]$ cat output/* 1 dfsadmin 1 dfs.replication 注:以下结构是我主机上执行的结果。
[hadoop@HadoopMaster hadoop-2.6.0]$ ls -al output/
total 20
drwxrwxr-x 2 hadoop hadoop 4096 03-29 18:52 .
drwxr-xr-x 11 hadoop hadoop 4096 03-29 18:52 ..
-rw-r--r-- 1 hadoop hadoop 11 03-29 18:52 part-r-00000
-rw-rw-r-- 1 hadoop hadoop 12 03-29 18:52 .part-r-00000.crc
-rw-r--r-- 1 hadoop hadoop 0 03-29 18:52 _SUCCESS
-rw-rw-r-- 1 hadoop hadoop 8 03-29 18:52 ._SUCCESS.crc
以上操作主要功能是在Hadoop安装的目录下创建文件夹input,然后将 etc/hadoop/目录下的xml 文件拷贝到文件夹input下,通过执行hadoop命令调用java编写的jar程序share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 将input目录下的所有xml文件内包含dfs的内容写入到output目录下。
hadoop也能在单节点上以伪分布式模式运行,Hadoop守护进程以独立的Java进程运行。
配置:
etc/hadoop/core-site.xml:
etc/hadoop/hdfs-site.xml:fs.defaultFS hdfs://localhost:9000
dfs.replication 1
首先,检查是否可以通过在提供密码的情况下使用ssh命令连接到localhost主机。
$ ssh localhost 如果不能在无密的情况下ssh到localhost,现在需要使用以下命令配置ssh信任。 $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys #注意:执行完成以上命令后,请确认 ~/.ssh/authorized_keys 文件的权限,一定要是644,否则,互信不会成功,导致无法正常通信,具体原因是由于SSH出于安全考虑。
以下命令是在本地执行MapReduce作业,如果想在YARN上执行作业,请参考YARN on Single Node.
$ bin/hdfs namenode -format
$ sbin/start-dfs.sh
Hadoop守护进程日志输出被写入$HADOOP_LOG_DIR目录(默认为$HADOOP_HOME/logs)
$ bin/hdfs dfs -mkdir /user $ bin/hdfs dfs -mkdir /user/#本人执行的是 $bin/hdfs dfs -mkdir /user/hadoop
$ bin/hdfs dfs -put etc/hadoop /usr/hadoop/input #第一个地址是源地址,第二个地址是目标地址即HDFS地址。
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'
将分布式文件系统中的文件拷贝到本地,并查看输出内容:
$ bin/hdfs dfs -get output output $ cat output/*
或者在分布式文件系统中查看文件:
$ bin/hdfs dfs -cat output/*
$ sbin/stop-dfs.sh
You can run a MapReduce job on YARN in a pseudo-distributed mode by setting a few parameters and running ResourceManager daemon and NodeManager daemon in addition.
The following instructions assume that 1. ~ 4. steps of the above instructions are already executed.
etc/hadoop/mapred-site.xml:
mapreduce.framework.name yarn
etc/hadoop/yarn-site.xml:
yarn.nodemanager.aux-services mapreduce_shuffle
$ sbin/start-yarn.sh
$ sbin/stop-yarn.sh
For information on setting up fully-distributed, non-trivial clusters see Cluster Setup.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23628945/viewspace-1486002/ ,如需转载,请注明出处,否则将追究法律责任。