由于最近参加学校云计算的一个比赛,所以试着在centos下搭集群。以下为我参考的帖子。讲得很详细。不过我的JDK装的8.JAVA_HOME等变量也要依据实际情况加以改动。最后,感谢原作者提供的经验分享。
以下转自:http://blog.sina.com.cn/s/blog_5252f6ca0101kb3s.html
采用伪分布式模式
,即hadoop将所有进程运行于
同一台主机上
,但此时Hadoop将使用分布式文件系统,而且各jobs也是由JobTracker服务管理的独立进程。同时,由于伪分布式的Hadoop集群只有一个节点,因此HDFS的块复制将限制为单个副本,其secondary-master和slave也都将运行于本地主机。此种模式除了并非真正意义的分布式之外,其程序执行逻辑完全类似于完全分布式,因此,常用于开发人员测试程序执行。
1,准备工作
切换为root用户,具体请百度
apt安装jdk,ssh,具体请百度。
官网下载hadoop2.4.0,解压到/home/wbq/hadoop2.4.0
2,对于hadoop的配置
#vietc/profile
注意,这里说的etc不是hadoop文件夹下的那个,是用户根目录下的。在末尾添加:
exportJAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
exportHADOOP_PREFIX=/home/wbq/hadoop-2.4.0
exportCLASSPATH=".:$JAVA_HOME/lib:$CLASSPATH"
exportPATH="$JAVA_HOME/:$HADOOP_PREFIX/bin:$PATH"
exportHADOOP_PREFIX PATH CLASSPATH
进入hadoop2.4.0文件夹,配置etc/hadoop中的文件。
hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
另外可选的添加上:
exportHADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
exportHADOOP_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目录,不是傻逼呵呵的自己的用户名下的目录。
试一下sshlocalhost要是能免密码登陆显示系统信息,就应该是对的。(这里有个输入密码环节,是系统的密码)
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的设置,是不是输错了。
还有可能出现permissiondenied权限不够,那就是你设置ssh登陆的问题我觉得可能是因为,上面我说的那种情况,你是在cat的时候,把密钥加载到了wbq的目录下,而不是root目录下,而wbq(用户名)又恰恰比起root来说权限不足,所以上面我说要从一开始就切换到root下执行过程。
这里要是出现好几个staring这个那个的,而且没有报错,估计就是对了。
测试一下状态吧,检查一下进程是否启动jps命令:出现大概是:
21567SecondaryNameNode
21384 DataNode
21921 NodeManager
22167 Jps
21720 ResourceManager
21237 NameNode
然后再测试一下hadoop状态,
./bin/hadoop dfsadmin -report,出现大概是:
DEPRECATED: Use of thisscript to execute hdfs command is deprecated.
Instead usethe hdfs command for it.
14/05/0210:50:35 WARN util.NativeCodeLoader: Unable to load native-hadooplibrary for your platform... using builtin-java classes whereapplicable
ConfiguredCapacity: 31407177728 (29.25 GB)
PresentCapacity: 23889055744 (22.25 GB)
DFSRemaining: 23889027072 (22.25 GB)
DFS Used:28672 (28 KB)
DFS Used%:0.00%
Underreplicated blocks: 0
Blocks withcorrupt replicas: 0
Missingblocks: 0
balabala&……………………(省略)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00% Cache Remaining%: 0.00% Last contact: FriMay
02 10:50:35 CST2014
这就应该是对的了。
http://localhost:8088 hadoop进程管理页面