Hadoop伪分布模式

https://hadoop.apache.org/docs/r3.1.2/hadoop-project-dist/hadoop-common/SingleCluster.html

建立伪分布模式

运行Hadoop步骤:

  1. ssh localhost 如果需要密码就运行
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
  1. 进入当前hadoop文件夹
cd /usr/local/Cellar/hadoop/3.1.2
  1. 格式化一个新的分布式文件系统:
./bin/hdfs namenode -format
  1. 启动启动Hadoop守护进程:
./sbin/start-dfs.sh
  1. Overview 界面:http://localhost:9870

下面来看下给定例子的grep功能。但是这里不能用local的文件input来计算了,得把文件上传到分布式文件系统。

  1. 创建执行MapReduce操作所需的HDFS目录
libexec $ bin/hdfs dfs -mkdir /user
libexec $ bin/hdfs dfs -mkdir /user/<username>
  1. 将输入文件拷贝到分布式文件系统
  libexec $ bin/hdfs dfs -mkdir input
  libexec $ bin/hdfs dfs -put etc/hadoop/*.xml input

8.运行grep

 libexec $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.2.jar grep input output 'dfs[a-z.]+'

  1. 将输出文件从分布式文件系统拷贝到本地文件系统查看:
 libexec $ bin/hdfs dfs -get output output
  libexec $ cat output/

或者直接在分布式文件系统看:

libexec Huizhi$ bin/hadoop fs -cat output/*
  1. 完成全部操作后,停止守护进程:
$ bin/stop-all.sh

刚刚用到的Shell命令

在hadoop中,统一用bin/hadoop fs <args>这种形式调用。

1)cat : 将路径指定文件的内容输出
格式: bin/hadoop fs -cat file
例子:bin/hadoop fs -cat output/*
解释:将output/*的内容输出,结果会显示在终端。
2)chmod:改变文件的权限 参考
使用方法:hadoop fs -chmod mode file
例子:$ chmod 0600 ~/.ssh/authorized_keys
解释:0600是指指定root用户可以rw, group 和others无权限。
3)get:复制文件到本地文件系统
格式:hadoop fs -get [-ignorecrc] [-crc] <src> <localdst>
例子: libexec $ bin/hdfs dfs -get output output
解释:将分布式文件系统的output复制到本地
4)put:从本地文件系统中复制单个或多个源路径到目标文件系统。
格式:hadoop fs -put <localsrc> ... <dst>
例子:libexec $ bin/hdfs dfs -put etc/hadoop/*.xml input
解释:将本地的hadoop下的xml格式的文件复制到hdfs的input内。

HDFS的结构

  1. 主节点:只有一个,namenode,负责管理,接收用户操作请求,可以实现对文件系统的操作,维护文件系统的目录结构(用来对文件进行分类管理)。管理文件与block之间关系,block与datanode之间关系。(文件被划分为Block,Block又被划分为block。)
  2. 从节点 :有很多个,datanode,负责存储文件,例如,保存副本,防止数据丢失。

参考:
http://www.voidcn.com/article/p-ueghbjgy-bqu.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容