Mac下的Hadoop,和网上别人的教程以及官方文档差别好像很大,我的是2.7.1版本,也可能是版本问题。
出了问题研究了很久,网上也找了很久。
1.tcd-pc$ hdfs dfs -put 2.7.1/tcd.docx input
这样是会报错的
解决方法:在input前面加上/ 就是/input
2.tcd-pc$ jps
1637 FsShell没有启动datanode的问题 解决方法: 需要在日志文件里找到
2341 NameNode
2549 SecondaryNameNode
1433 ResourceManager
1531 NodeManager
2623 Jps
WARN org.apache.hadoop.hdfs.server.common.Storage: java.io.IOException: Incompatible clusterIDs in /usr/local/Cellar/hadoop/hdfs/tmp/dfs/data:namenode clusterID = CID-6ba7328a-177b-41c7-a0a4-4169d70f056c; datanode clusterID = CID-ecf4ac97-db73-42f9-820e-2d9f83c2f310
然后在/usr/local/Cellar/hadoop/hdfs/tmp/dfs/name/current下找到version,修改namespaceid 为datanode一样的id
也可以datanode的namespaceid改为和namenodeid一样都可以
然后重启 发现datanode正常启动
1637 FsShell
3159 DataNode
3352 Jps
1433 ResourceManager
3066 NameNode
1531 NodeManager3278 SecondaryNameNode
3.编写自己的MapReduce程序,直接抄WordCount,然后打包提交到Hadoop运行。
其中WordCount.java在 javac编译时,一直提示:
WordsCount.java:1: ?????? org.apache.hadoop.mapreduce ??????
import org.apache.hadoop.mapreduce.Job;
^
WordsCount.java:2: ?????? org.apache.hadoop.mapreduce ??????
import org.apache.hadoop.mapreduce.Mapper;
^
WordsCount.java:3: ?????? org.apache.hadoop.mapreduce ??????
import org.apache.hadoop.mapreduce.Reducer;
^
WordsCount.java:4: ?????? org.apache.hadoop.mapreduce.lib.input ??????
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
^
WordsCount.java:5: ?????? org.apache.hadoop.mapreduce.lib.output ??????
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
^
WordsCount.java:10: ?????? org.apache.hadoop.conf ??????
import org.apache.hadoop.conf.Configuration;
^
还有很多,主要原因是环境变量设置出错,最后本人在hadoop下vim 一个新的profile
tcd-pc$ sudo vim profile
export HADOOP_HOME=/usr/local/Cellar/hadoop # 如果没设置的话, 路径是hadoop安装目录
export PATH=$HADOOP_HOME/2.7.1/bin:$HADOOP_HOME/2.7.1/sbin:$PATH # 如果没设置的话
export CLASSPATH=$($HADOOP_HOME/2.7.1/bin/hadoop classpath):$CLASSPATH
然后一定要执行 source
tcd-pc$ source profile
再执行javac 你的java程序
会出现几个class文件
执行
tcd-pc$ jar -cvf WordsCount.jar ./WordsCount*.class
把这几个class都打包成jar文件
提交执行
hadoop jar WordsCount.jar WordsCount /input /output2
4.之前用的好好的,今天start时候出现问题,提示缺少或无法加载主类 getconf 等
然后上网查,发下他们出问题都是安装时候出现的,而我是在使用了几天后才出现的,并没有路径错误
又看了很久的启动源码,最后试了下重新格式化namenode,居然成功了。