来来往往配置了很多次了,每次总结的文件要用的时候都找不到。
本文仅仅是方便快速开发测试mapreduce程序而搭建Hadoop单机环境。
Hadoop官方下载地址:http://archive.apache.org/dist/hadoop/core/
1.在CentOs中安装拼音输入法:
su root
yum install "@Chinese Support"
exit
注销:System>Log Out 用户名
重新登录之后:System>Preferences>Input Method>选中Enable input method feature>
Use IBus>Input Method Preferences>选中Tab-Input Method>Select an input method>Chinese>add
------------------------------------------------------------------------------
2.安装jdk
su -
sh jdk...
cd /
#vim /etc/profile
在里面添加如下内容
export JAVA_HOME=/usr/java/jdk1.6.0_27
export JAVA_BIN=/usr/java/jdk1.6.0_27/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
要按esc进入命令模式,然后输入:wq
让/etc/profile文件修改后立即生效 ,可以使用如下命令:
# . /etc/profile
注意: . 和 /etc/profile 有空格.
检验:java -version
------------------------------------------------------------------------------
3.配置SSH
ssh-keygen -t rsa
------------------------------------------------------------------------------
4.配置hadoop
/usr/local目录下 mkdir hadoop
在usr/local/hadoop/下unzip hadoop-1.0.3.zip
配置Hadoop环境变量:(profile是全局变量,.bash_profile是私有变量)
su -
#vim /etc/profile
export HADOOP_INSTALL=/usr/local/hadoop/hadoop-1.0.3
export PATH=$PATH:$HADOOP_INSTALL/bin
给所有子目录操作权限:
[root@localhost ~]# chmod -R 777 /usr/local/hadoop
检验:hadoop version
1.给Hadoop配置jdk
打开usr/local/hadoop/hadoop-1.0.3/conf中的hadoop-env.sh配置hadoop的jdk:
export JAVA_HOME=/usr/java/jdk1.6.0_27
ifconfig,替换ip
2.配置core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.40.130:9000/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/hadooptmp</value>
</property>
</configuration>
3.配置hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
4.配置mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.40.130:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/usr/local/hadoop/mapred/local</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/tmp/hadoop/mapred/system</value>
</property>
</configuration>
5.配置masters和slaves
在/usr/local/hadoop/hadoop-1.0.3/conf/下中的masters文件和slaves文件,
将其中的localhost换成IP地址192.168.40.130
6.编辑主机名:# vim /etc/hosts
127.0.0.1 localhost
192.168.40.130 master
192.168.40.130 slave
按esc进入命令模式,然后输入:wq
7.格式化Hadoop
进入 /usr/local/hadoop/hadoop-1.0.3/bin目录下,格式化namenode
[root@master bin]# hadoop namenode -format
8.启动hadoop
进入 /usr/local/hadoop/hadoop-1.0.3/bin目录下,
使用创建用户启动Hadoop:执行start-all.sh命令
启动完成后,可用jps命令查看hadoop进程是否启动完全。正常情况下应该有如下进程:
29151 Jps
3106 SecondaryNameNode
3190 JobTracker
2846 NameNode
3306 TaskTracker
2960 DataNode
查看节点:localhost:50070
查看job:localhost:50030
此时除了本机外,其他机器无法访问。设置防火墙(单机快速搭建环境,直接关闭防火墙比较好,否则涉及到的端口较多,需要全部设置)
System>Administration>FireWall>Disable
使用Eclipse插件遇到问题:
权限问题两种解决方案:
1.通过代码设置用户:http://heipark.iteye.com/blog/1178810
- UserGroupInformation ugi = UserGroupInformation.createRemoteUser("root");
- try {
- ugi.doAs(new PrivilegedExceptionAction<Void>() {
- public Void run() throws IOException {
- Job job = new Job(initConf(), "tencent m/r");
- // do something
- System.exit(job.waitForCompletion(true) ? 0 : 1);
- return null;
- }
- });
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
2.编译插件(这是网上的方法,亲测没用,获得的用户还是本机用户,没具体看源码,改一下应该不难):
将hadoop-x.x.x/src/core/org/apache/hadoop/fs/FileUtil.java里面方法checkReturnValue的代码注释掉.
放到一个新项目中,包名一定要对应,编译,找到FileUtil.class,压缩文件管理器打开,覆盖源文件。
查看hdfs目录:
[root@master hadoop-1.0.3]# sh bin/hadoop fs -lsr /
[root@master conf]# hadoop fs -cat /tmp/hadoop/mapred/output/part-r-00000
上传文件:
[root@master hadoop-1.0.3]# sh bin/hadoop fs -put /home/duke147/data.txt /usr/local/hadoop/hadooptmp/mapred
Hadoop 解除 “Name node is in safe mode”
hadoop@hadoop-master:~$ hadoop dfsadmin -safemode leave
sudo -u hdfs hadoop dfsadmin -safemode leave
解决办法:(无权限操作就用这个命令)
切换到root下执行:sudo -u hdfs /bin/ksh
hdfs@:/root> sudo -u hdfs hadoop dfsadmin -safemode leave
安装过程中会有各种问题,总的解决方案:看日志。日志目录默认路径在Hadoop的安装环境下。