环境: Mac, JDK8, Maven3
- 下载二进制版,这种 java 代码的玩意儿就同必要从源码去编译了吧,怎么方便怎么来
- 先在单机上跑一下试试
在下载下来的 hadoop 目录里,创建个 input 目录
$mkdir input
把 etc/hadoop 目录下的 xml 文件复制进去,后面使用
$cp etc/hadoop/*.xml input
统计一下 input 目录里的文件内容匹配 ‘dfs[a-z.]+’ 的地方,结果放到 output 目录里
$bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+'
查看一下 output 的内容
$cat output/*
以伪分布式的方式玩玩,首先修改 etc/hadoop/core-site.xml:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
修改 etc/hadoop/hdfs-site.xml:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
为了能够无密钥 ssh 登录 localhost,需要生成一对 dsa 算法的加密密钥,并把公钥放到 authorized_keys 里去
$ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$export HADOOP_PREFIX=/usr/local/hadoop
不要按官网上教程抄,HADOOP_PREFIX 中的下划线不需要转义
格式化文件系统,虽然我目前也不是太了解 HDFS
$bin/hdfs namenode -format
以后台进程的形式启动 NameNode, DataNode:
$sbin/start-dfs.sh
然后就可以打开 localhost:50070 查看 NameNode 了建立 MapReduce jobs 执行必需的目录,我的用户名就是 admin:
$bin/hdfs dfs -mkdir /user
$bin/hdfs dfs -mkdir /user/admin
把etc/hadoop 里的文件复制到分布式文件系统中
$bin/hdfs dfs -put etc/hadoop input
执行 example:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+'
有两种方式查看上面的结果, 一种是先把分布式文件系统中的文件复制到本地文件系统中来再查看:
$ bin/hdfs dfs -get output output
$ cat output/*
一种是直接查看分布式文件系统上的内容:
$ bin/hdfs dfs -cat output/*
与 11 配套的, 关闭后台的 NameNode, DataNode:
$ sbin/stop-dfs.sh
好在以前接触过 solr,这种分布式的东西了解一点,后面再慢慢把这里面每一行都确切地搞清楚做了什么事。