2018-12-20,周四,阴,早上有毛毛雨。
hadoop学习笔记:
安装hadoop2.7.6:在http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/ 下载2.7.6的tar.gz包。下下来后解压到一个地方,记住路径。
mac ssh localhost报could not resolve hostname,但是ssh 127.0.0.1没问题,解法:将~/.ssh/known_hosts删掉(原理不明),再次ssh localhost时会报警:authentication xxxxxx……我猜这个问题和文件权限与公钥有关(更详细的猜测是,很久以前这台机器曾经被xmly执行过ssh localhost,成功了,公钥存在known_hosts里。后来有一天,另一个主人zyf接管了它,ssh-keygen再来一套,生成一套新的公私钥,此时未更新known_hosts文件,老的公钥就失灵了)。待补课。
安装Java8:(我还是在用linux的思想折腾macos)
在oracle官网下载Java8(为了es,我们的es5需要java8,不需要java11),下了一个dmg文件。安装包没告诉我它装哪儿去了。谷歌一番得到一个命令:
/usr/libexec/java_home -v 1.8
得到Java8的安装路径/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home。复制一下。然后执行
sudo vi /etc/profile
将export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home写进去,并顺手把PATH新增:$JAVA_HOME/bin。保存退出source /etc/profile。
此刻已经下午四点十分了……ssh的known_hosts文件坑了我几乎一整天……
下面安装hadoop的standalone版本……先搞配置。
参考自http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html。
将etc/hadoop/core-site.xml里configuration标签添加一条property:
fs.defaultFS
hdfs://localhost:9000
etc/hadoop/hdfs-site.xml:
dfs.replication
1
完事之后进到hadoop2.7.6/sbin,执行./start-dfs.sh,会发现跑起来了。
(一件意外的事:我曾经安装过盗版的Idea,盗版步骤有一条是在hosts里添加一行0.0.0.0 accounts.jetbrains.com,如今secondary namenode的地址是accounts.jetbrains.com。。。我怀疑hadoop有去读取并解析hosts文件……如下:
xmlydeMacBook-Pro:sbin xmly$ ./start-dfs.sh
18/12/20 16:37:27 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [localhost]
localhost: starting namenode, logging to /Users/xmly/tools/hadoop-2.7.6/logs/hadoop-xmly-namenode-xmlydeMacBook-Pro.local.out
localhost: starting datanode, logging to /Users/xmly/tools/hadoop-2.7.6/logs/hadoop-xmly-datanode-xmlydeMacBook-Pro.local.out
Starting secondary namenodes [account.jetbrains.com]
account.jetbrains.com: starting secondarynamenode, logging to /Users/xmly/tools/hadoop-2.7.6/logs/hadoop-xmly-secondarynamenode-xmlydeMacBook-Pro.local.out
18/12/20 16:37:43 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
xmlydeMacBook-Pro:sbin xmly$
,看到那行“starting secondary namenodes[account.jetbrains.com]”也是很惊呆了。另一件惊呆的事是,我虽然安装了Java8配置了JAVA_HOME,但hadoop并没有使用/etc/profile里的JAVA_HOME,而是使用了自带的JDK。存疑)
然后将hadoop的bin和sbin两个文件夹加进PATH:
sudo vi /etc/profile
export HADOOP_HOME=/Users/xmly/tools/hadoop-2.7.6
export PATH=....:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
:wq!, source /etc/profile
这就算配置好了,当终端停在随便哪个文件夹时都可以用它。
启动前,格式化一下namenode:
hdfs namenode -format
启动:start-dfs.sh,退出:stop-dfs.sh
启动后,常用的操作命令有:
hadoop fs -ls / 查看hdfs的根目录下的内容的
hadoop fs -lsr / 递归查看hdfs的根目录下的内容的
hadoop fs -mkdir /d1 在hdfs上创建文件夹d1
hadoop fs -put
hadoop fs -get
hadoop fs -text
hadoop fs -rm 删除hdfs中文件
hadoop fs -rmr 删除hdfs中的文件夹
更多参数见官网文档。
Hadoop的Java接口是有的。import org.apache.hadoop.......官方文档见……臣卜木曹没找到官方文档。但是看见有人博客里推荐《hadoop权威指南》。马住。
pom:
org.apache.hadoop
hadoop-common
2.5.1
org.apache.hadoop
hadoop-client
2.2.0
org.apache.hadoop
hadoop-hdfs
2.5.1