全栈工程师开发手册 (作者:栾鹏)
架构系列文章
假设Hadoop的安装目录HADOOP_HOME为/home/admin/hadoop。
启动与关闭
启动HADOOP
进入HADOOP_HOME目录。
执行 sh bin/start-all.sh
关闭HADOOP
进入HADOOP_HOME目录。
执行sh bin/stop-all.sh
文件操作
Hadoop使用的是HDFS,能够实现的功能和我们使用的磁盘系统类似。并且支持通配符,如*。
查看文件列表
查看hdfs中/user/admin/aaron目录下的文件。
进入HADOOP_HOME目录。
执行sh bin/hadoop fs -ls /user/admin/aaron
这样,我们就找到了hdfs中/user/admin/aaron目录下的文件了。
我们也可以列出hdfs中/user/admin/aaron目录下的所有文件(包括子目录下的文件)。
进入HADOOP_HOME目录。
执行sh bin/hadoop fs -lsr /user/admin/aaron
创建文件目录
查看hdfs中/user/admin/aaron目录下再新建一个叫做newDir的新目录。
进入HADOOP_HOME目录。
执行sh bin/hadoop fs -mkdir /user/admin/aaron/newDir
删除文件
删除hdfs中/user/admin/aaron目录下一个名叫needDelete的文件
进入HADOOP_HOME目录。
执行sh bin/hadoop fs -rm /user/admin/aaron/needDelete
删除hdfs中/user/admin/aaron目录以及该目录下的所有文件
进入HADOOP_HOME目录。
执行sh bin/hadoop fs -rmr /user/admin/aaron
上传文件
上传一个本机/home/admin/newFile的文件到hdfs中/user/admin/aaron目录下
进入HADOOP_HOME目录。
执行sh bin/hadoop fs –put /home/admin/newFile /user/admin/aaron/
下载文件
下载hdfs中/user/admin/aaron目录下的newFile文件到本机/home/admin/newFile中
进入HADOOP_HOME目录。
执行sh bin/hadoop fs –get /user/admin/aaron/newFile /home/admin/newFile
查看文件
我们可以直接在hdfs中直接查看文件,功能与类是cat类似
查看hdfs中/user/admin/aaron目录下的newFile文件
进入HADOOP_HOME目录。
执行sh bin/hadoop fs –cat /home/admin/newFile
MAPREDUCE JOB操作
提交MAPREDUCE JOB
原则上说,Hadoop所有的MapReduce Job都是一个jar包。
运行一个/home/admin/hadoop/job.jar的MapReduce Job
进入HADOOP_HOME目录。
执行sh bin/hadoop jar /home/admin/hadoop/job.jar [jobMainClass] [jobArgs]
杀死某个正在运行的JOB
假设Job_Id为:job_201005310937_0053
进入HADOOP_HOME目录。
执行sh bin/hadoop job -kill job_201005310937_0053
更多HADOOP的命令
上面介绍的这些Hadoop的操作命令是我们最常用的。如果你希望了解更多,可以按照如下的方式获取命令的说明信息。
进入HADOOP_HOME目录。
执行sh bin/hadoop
我们可以看到更多命令的说明信息:
Usage: hadoop [--config confdir] COMMAND
where COMMAND is one of:
namenode -format format the DFS filesystem
secondarynamenode run the DFS secondary namenode
namenode run the DFS namenode
datanode run a DFS datanode
dfsadmin run a DFS admin client
fsck run a DFS filesystem checking utility
fs run a generic filesystem user client
balancer run a cluster balancing utility
jobtracker run the MapReduce job Tracker node
pipes run a Pipes job
tasktracker run a MapReduce task Tracker node
job manipulate MapReduce jobs
queue get information regarding JobQueues
version print the version
jar <jar> run a jar file
distcp <srcurl> <desturl> copy file or directories recursively
archive -archiveName NAME <src>* <dest> create a hadoop archive
daemonlog get/set the log level for each daemon
or
CLASSNAME run the class named CLASSNAME
Most commands print help when invoked w/o parameters.
各组件端口
Hadoop集群的各部分一般都会使用到多个端口,有些是daemon之间进行交互之用,有些是用于RPC访问以及HTTP访问。而随着Hadoop周边组件的增多,完全记不住哪个端口对应哪个应用,特收集记录如此,以便查询。
这里包含我们使用到的组件:HDFS, YARN, HBase, Hive, ZooKeeper:
组件 | 节点 | 默认端口 | 配置 | 用途说明 |
HDFS | DataNode | 50010 | dfs.datanode.address | datanode服务端口,用于数据传输 |
HDFS | DataNode | 50075 | dfs.datanode.http.address | http服务的端口 |
HDFS | DataNode | 50475 | dfs.datanode.https.address | https服务的端口 |
HDFS | DataNode | 50020 | dfs.datanode.ipc.address | ipc服务的端口 |
HDFS | NameNode | 50070 | dfs.namenode.http-address | http服务的端口 |
HDFS | NameNode | 50470 | dfs.namenode.https-address | https服务的端口 |
HDFS | NameNode | 8020 | fs.defaultFS | 接收Client连接的RPC端口,用于获取文件系统metadata信息。 |
HDFS | journalnode | 8485 | dfs.journalnode.rpc-address | RPC服务 |
HDFS | journalnode | 8480 | dfs.journalnode.http-address | HTTP服务 |
HDFS | ZKFC | 8019 | dfs.ha.zkfc.port | ZooKeeper FailoverController,用于NN HA |
YARN | ResourceManager | 8032 | yarn.resourcemanager.address | RM的applications manager(ASM)端口 |
YARN | ResourceManager | 8030 | yarn.resourcemanager.scheduler.address | scheduler组件的IPC端口 |
YARN | ResourceManager | 8031 | yarn.resourcemanager.resource-tracker.address | IPC |
YARN | ResourceManager | 8033 | yarn.resourcemanager.admin.address | IPC |
YARN | ResourceManager | 8088 | yarn.resourcemanager.webapp.address | http服务端口 |
YARN | NodeManager | 8040 | yarn.nodemanager.localizer.address | localizer IPC |
YARN | NodeManager | 8042 | yarn.nodemanager.webapp.address | http服务端口 |
YARN | NodeManager | 8041 | yarn.nodemanager.address | NM中container manager的端口 |
YARN | JobHistory Server | 10020 | mapreduce.jobhistory.address | IPC |
YARN | JobHistory Server | 19888 | mapreduce.jobhistory.webapp.address | http服务端口 |
HBase | Master | 60000 | hbase.master.port | IPC |
HBase | Master | 60010 | hbase.master.info.port | http服务端口 |
HBase | RegionServer | 60020 | hbase.regionserver.port | IPC |
HBase | RegionServer | 60030 | hbase.regionserver.info.port | http服务端口 |
HBase | HQuorumPeer | 2181 | hbase.zookeeper.property.clientPort | HBase-managed ZK mode,使用独立的ZooKeeper集群则不会启用该端口。 |
HBase | HQuorumPeer | 2888 | hbase.zookeeper.peerport | HBase-managed ZK mode,使用独立的ZooKeeper集群则不会启用该端口。 |
HBase | HQuorumPeer | 3888 | hbase.zookeeper.leaderport | HBase-managed ZK mode,使用独立的ZooKeeper集群则不会启用该端口。 |
Hive | Metastore | 9083 | /etc/default/hive-metastore中export PORT=<port>来更新默认端口 | |
Hive | HiveServer | 10000 | /etc/hive/conf/hive-env.sh中export HIVE_SERVER2_THRIFT_PORT=<port>来更新默认端口 | |
ZooKeeper | Server | 2181 | /etc/zookeeper/conf/zoo.cfg中clientPort=<port> | 对客户端提供服务的端口 |
ZooKeeper | Server | 2888 | /etc/zookeeper/conf/zoo.cfg中server.x=[hostname]:nnnnn[:nnnnn],标蓝部分 | follower用来连接到leader,只在leader上监听该端口。 |
ZooKeeper | Server | 3888 | /etc/zookeeper/conf/zoo.cfg中server.x=[hostname]:nnnnn[:nnnnn],标蓝部分 | 用于leader选举的。只在electionAlg是1,2或3(默认)时需要。 |