一.hadoop安装及注意事项
1.安装hadoop的环境,必须在你的系统中有java的环境。
2.必须安装ssh,有的系统默认就安装,如果没有安装需要手动安装。
可以用yum install -y ssh 或者 rpm -ivh ssh的rpm包进行安装
二.安装并配置java环境
hadoop需要在java的环境中运行,需要安装JDK。
1.在官网上下载jdk,网址:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
a.进入选择相应的rpm包或者tar包,进行安装。我这里是下载的rpm包,因为这样比较方便。用rpm包不需要进行环境变量的配置就可以使用了。
# rpm -ivh /usr/java/jdk1.8.0_60.rpm
b.检查java环境是否安装成功,敲入如下命令:
# java -version 显示相应的版本号
# javac javac相应的信息
# java java相应的信息
如以上打印出来了,就表示成功。
三.下载并安装hadoop
1.进入hadoop的官网进行下载相应hadoop的版本。地址为:http://hadoop.apache.org/releases.html
a.下载相应的tar包
b.进行tar解包
# tar -ivh /usr/local/hadoop/hadoop-2.7.1.tar.gz
c.修改相应的配置文件信息,制定相应的java_home
#vi /usr/local/hadoop/hadoop-2.7.1/ etc/hadoop/hadoop-env.sh
# set to the root of your Java installation
export JAVA_HOME=/usr/java/latest #显示当前jdk安装的目录 一般rpm是安装在 usr 目录下
d.配置hadoop的环境变量(使hadoop的命令加到path中,就可以使用hadoop的相关命令)
1.编辑/etc/profile文件,在文件的后面加上如下代码:
HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.1
PATH=$HADOOP_HOME\bin:$PATH
export HADOOP_HOME PATH
2.使修改的文件生效
source /etc/profile
这样就可以进入hadoop的安装目录去进行相关的命令操作了!
三.执行相关的命令
1.运行一个MapReduce Job在当地:
进入hadoop的安装目录:$ cd /usr/local/hadoop/hadoop-2.7.1/
一:格式化文件系统 $ bin/hdfs namenode -format
二:开始一个NameNode后台进程 和 DataNode 后台进程。
$ ./sbin/start-dfs.sh
hadoop的后台进程的的日志文件输出到安装目录文件下的logs文件中。
三:进入网站可以进行查看相应的NameNode
NameNode - http://localhost:50070/
四:执行MapReduce Job,必须创建HDFS文件夹
$ bin/hdfs dfs -mkdir /usr
$ bin/hdfs dfs -mkdir /usr/<username>
五:复制输入文件到分布式文件系统
$ bin/hdfs dfs -put etc/hadoop input
六:运行提供的相应的例子
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-maegrop'./bj-getoutpreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+'
七:检查输出的文件:从分布式文件系统中复制输出文件到本地,并测试。
$ bin/hdfs dfs -get output output
$ cat output/*
或者查看输出文件在分布式文件系统中
$ bin/hdfs dfs -cat output/*
八:停止后台进程
$ sbin/stop-dfs.sh
四.Hadoop的相关命令
所有的Hadoop命令通过bin/ hadoop脚本调用,Hadoop脚本运行不带任何参数打印描述为所有的命令。
1.Usage: hadoop [--config confdir] [--loglevel loglevel] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS],这些选项是可选的。
a.--config confdir:覆盖默认的配置目录 . 默认是 ${HADOOP_HOME}/conf
b.--loglevel loglevel:覆盖日志等级。日志等级有:FATAL, ERROR, WARN, INFO, DEBUG, 和 TRACE,默认为INFO等级。
c.GENERIC_OPTIONS :多命令支持的共同选项.
d.COMMAND_OPTIONS:各种命令的选项是在文档描述了Hadoop的共同子项目,HDFS和YARN 在其他的文档中说明。
2.常用操作
a.可以用多个操作命令结合使用,来配置相应的hadoop
1.-archives <comma separated list of archives>:指定用逗号分隔文档,仅适用于job。
2.-conf <configuration file>:指定一个应用的配置文件。
3.-D <property>=<value>:获取属性文件中的值
4.-files <comma separated list of files>:指定以逗号分隔的文件被复制map reduce集群,仅适用于job。
5.-jt <local> or <resourcemanager:port>:指定一个resourcemanager。仅适用于job。
6.-libjars <comma seperated list of jars>:指定以逗号分隔的jar文件,包含在classpath中,仅适用于job。
五.Hadoop的常用命令
所有的hadoop命令是通过hadoop shell 命令执行,包含User Commands和Admininistration Commands。
1.User Commands:在hadoop集群的情况下要慎用。
a.archive:创建一个hadoop archive,
b.checknative: Usage: hadoop checknative [-a] [-h]
-a : 选择全部可用的包
-h:打印帮助信息
c.classpath:Usage: hadoop classpath [--glob |--jar <path> |-h |--help]
--glob:通配符
--jar <path>:write classpath as manifest in jar named path
-h 、--help:打印帮助信息
d.credential:Usage: hadoop credential <subcommand> [options]
1.create alias [-provider provider-path] :
Prompts the user for a credential to be stored as the given alias. The hadoop.security.credential.provider.path within the core-site.xml file will be used unless a -provider is indicated.
2.delete alias [-provider provider-path] [-f]
Deletes the credential with the provided alias. The hadoop.security.credential.provider.path within the core-site.xml file will be used unless a -provider is indicated. The command asks for confirmation unless -f is specified
3.list [-provider provider-path]
Lists all of the credential aliases The hadoop.security.credential.provider.path within the core-site.xml file will be used unless a -provider is indicated.
e.CLASSNAME:Usage: hadoop CLASSNAME
运行一个类名为CLASSNAME的类
f.version:Usage: hadoop version
打印hadoop的版本信息
g.trace:查看和修改Hadoop tracing 设置。可以看相应的官方文档。
h.key:管理keys。
i.jar:Usage: hadoop jar <jar> [mainClass] args...
运行一个jar文件。
适用 yarn jar去运行 YARN 应用程序。
J.fs:可以查看相应的官方文档。
k.distcp:复制文件或者目录,更多查看相应的官方文档。
2.Administration Commands:在hadoop集群的情况下要慎用
后台进程日志:
a.daemonlog:Usage:
hadoop daemonlog -getlevel <host:httpport> <classname>
hadoop daemonlog -setlevel <host:httpport> <classname> <level>
1.-getlevel host:httpport classname:
Prints the log level of the log identified by a qualified classname, in the daemon running at host:httpport. This command internally connects to http://<host:httpport>/logLevel?log=<classname>
2.-setlevel host:httpport classname level
Sets the log level of the log identified by a qualified classname, in the daemon running at host:httpport. This command internally connects to http://<host:httpport>/logLevel?log=<classname>&level=<level>
在后台进程取得或者设置日志等级为相应的类。