问题及解决方案1.启动过程中出现问题: JAVA_HOME IS NOT SET. 解决方法是修改etc/hadoop/hadoop-env.sh文件,添加如下内容 export JAVA_HOME=/usr/lib/jdk/jdk1.7.0_51 2.HADOOP_CONF_DIR 未配置,出现错误:Error: Cannot find configuration directory: 在/etc/profile中添加: export HADOOP_HOME=/root/jhh/hadoop/hadoop-0.23.9 export YARN_HOME=/root/jhh/hadoop/hadoop-0.23.9 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop 3.访问log文件,permisson denied。 chmod修改log文件夹权限。 总结: 今天刚配置了一遍,只是单机版的伪分布式环境,之后在测试机上搭一遍。 刚开始学习hadoop,安装配置过程也走了一些弯路,希望多多讨论,互相学习。 1.如何判断格式化成功? 2.hadoop2.4启动方式是否发生变化? 3.hadoop2.4在配置方面是否有变化? 包下载:hadoop2.4最新版本各种包下载 在折腾了一天多才弄好环境的烦躁下,中间遇到各种问题,网上搜索还没有结果,最终经过很多折腾终于搞定,我觉得我有必要自己写一篇关于hadoop的安装了。 ------------------------------------------------------------------------------------------------------------------- 本人的准备工作,官网最新的java7u25(至少是java7,具体版本不记得了,是apt安装的openjdk-java),hadoop也是最新的2.4.0。 采用伪分布式模式,即hadoop将所有进程运行于同一台主机上,但此时Hadoop将使用分布式文件系统,而且各jobs也是由JobTracker服务管理的独立进程。同时,由于伪分布式的Hadoop集群只有一个节点,因此HDFS的块复制将限制为单个副本,其secondary-master和slave也都将运行于本地主机。此种模式除了并非真正意义的分布式之外,其程序执行逻辑完全类似于完全分布式,因此,常用于开发人员测试程序执行。 1,准备工作 切换为root用户 apt安装jdk,ssh 可以参考 hadoop2完全分布式最新高可靠安装文档 官网下载hadoop2.4.0,解压到/home/wbq/hadoop2.4.0 可以下载:hadoop2.4最新版本各种包下载 2,对于hadoop的配置 #vi etc/profile 注意,这里说的etc不是hadoop文件夹下的那个,是用户根目录下的。在末尾添加: export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64 export HADOOP_PREFIX=/home/wbq/hadoop-2.4.0 export CLASSPATH=".:$JAVA_HOME/lib:$CLASSPATH" export PATH="$JAVA_HOME/:$HADOOP_PREFIX/bin:$PATH" export HADOOP_PREFIX PATH CLASSPATH 进入hadoop2.4.0文件夹,配置etc/hadoop中的文件。 hadoop-env.sh export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64 另外可选的添加上: export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib" core-site.xml,做如下配置: fs.default.name hdfs://localhost:9000 dfs.namenode.name.dir file:/home/wbq/hadoop-2.4.0/dfs/name dfs.datanode.data.dir file:/home/wbq/hadoop-2.4.0/dfs/data hdfs-site.xml,做如下配置(系统默认文件保存3份,因伪分布模式,故改为1份): dfs.replication 1 dfs.namenode.name.dir /home/wbq/hadoop-2.4.0/dfs/name dfs.datanode.data.dir /home/wbq/hadoop-2.4.0/dfs/data mapred-site.xml,做如下配置: mapreduce.jobtracker.address localhost:9001 这里2.4.0中没有这个文件,可以新建一个,或者直接修改mapred-site.xml.template mapreduce.framework.name yarn yarn-site.xml,如下配置: mapreduce.framework.name yarn yarn.nodemanager.aux-services mapreduce_shuffle 3,ssh免密码登陆设置 ssh-keygen -t rsa -P ""然后一直回车即可 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys 注意我这里用的root目录,不是傻逼呵呵的自己的用户名下的目录。 试一下ssh localhost要是能免密码登陆显示系统信息,就应该是对的。(这里有个输入密码环节,是系统的密码) 可以参考: linux(ubuntu)无密码相互登录高可靠文档 4,开始配置 第一步:到hadoop2.4.0目录下 ./bin/hadoop namenode –format格式化结点信息 最后一句出现shutting down什么玩意,中间没有warn或者fatal error应该就对了。 第二步:然后,开始sbin/start-all.sh. 新版本的hadoop其实不建议这么直接start-all,建议一步步来,神马start-dfs,然后在start-map,之类的,我觉得麻烦,就没试。 若是这里出现神马正在running,那么先执行一步stop-all.sh操作,在start-all。 还可能出现的是java神马class不行,没找到,或者让你每步都加载,这是javahome设置的问题,请仔细检查上面关于javahome的设置,是不是输错了。 还有可能出现permission denied权限不够,那就是你设置ssh登陆的问题我觉得可能是因为,上面我说的那种情况,你是在cat的时候,把密钥加载到了wbq的目录下,而不是root目录下,而wbq(用户名)又恰恰比起root来说权限不足,所以上面我说要从一开始就切换到root下执行过程。 这里要是出现好几个staring这个那个的,而且没有报错,估计就是对了。 测试一下状态吧,检查一下进程是否启动jps命令:出现大概是: 21567 SecondaryNameNode 21384 DataNode 21921 NodeManager 22167 Jps 21720 ResourceManager 21237 NameNode 然后再测试一下hadoop状态,./bin/hadoop dfsadmin -report,出现大概是: DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it. 14/05/02 10:50:35 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Configured Capacity: 31407177728 (29.25 GB) Present Capacity: 23889055744 (22.25 GB) DFS Remaining: 23889027072 (22.25 GB) DFS Used: 28672 (28 KB) DFS Used%: 0.00% Under replicated blocks: 0 Blocks with corrupt replicas: 0 Missing blocks: 0 balabala&……………………(省略) Cache Used: 0 (0 B) Cache Remaining: 0 (0 B) Cache Used%: 100.00% Cache Remaining%: 0.00% Last contact: Fri May 02 10:50:35 CST 2014 这就应该是对的了。 高兴的时候到了!浏览器下http://localhost:50070 这是hdfs的页面 http://localhost:8088 hadoop进程管理页面 |
|