首页 > 大数据 > Hadoop > Hadoop在CentOS系统上的伪分布式安装
系统环境:CentOS系统(uname
1. JDK安装及Java环境变量的配置
1.1
将jdk安装在/dev/data0/test目录下,因为data0空间较大。
sudo mkdir /dev/data0/test
cd /dev/data0/test
sudo mkdir java
cd java
sudo cp
/home/hadoop1/jdk-6u33-linux-x64.bin
.
sudo chmod 777
jdk-6u31-linux-i586.bin
sudo ./jdk-6u31-linux-i586.bin
这样就开始安装jdk了。一会就安装好了。
2.2
以用户hadoop1登录,进入用户主目录/home/hadoop1,命令行中执行命令“vi .bashrc”,加入以下内容,配置用户的人环境变量,对系统的环境变量不会造成影响。
# set java
environment
export JAVA_HOME=/data0/test/java/jdk1.6.0_33
export JRE_HOME=/ data0/test/java/jdk1.6.0_33/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
在vi编辑器增加以上内容后保存退出,并执行以下命令使配置生效
配置完毕后,在命令行中输入java -version,如出现下列信息说明java环境安装成功。
java version
"1.6.0_33"
2. Hadoop配置
下载 hadoop-0.20.2.tar.gz,将其解压到/datao/test/hadoop 目录下,解压后目录形式是/data0/test/hadoop/ hadoop-0.20.2。使用如下命令:
sudo chmod 777 hadoop-0.20.2.tar.gz
sudo tar zxvf hadoop-0.20.2.tar.gz 进行hadoop压缩文件解压。
2.1 进入/data0/test/hadoop/hadoop-0.20.2/conf, 配置Hadoop配置文件
2.1.1 配置hadoop-env.sh文件
命令为sudo vi hadoop-env.sh
添加
# set java environment
export JAVA_HOME=/data0/test/java/jdk1.6.0_33
编辑后保存退出。
2.1.2 配置core-site.xml
[hadoop1@master conf]# vi core-site.xml
<!-- Put site-specific property overrides in this file. -->
2.1.3 配置hdfs-site.xml
[hadoop1@master conf]# vi hdfs-site.xml
<!-- Put site-specific property overrides in this file. -->
2.1.4 配置mapred-site.xml
[hadoop1@vm10110041 conf]$ sudo vi mapred-site.xml
<!-- Put site-specific property overrides in this file. -->
2.1.5 配置masters文件和slaves文件
[hadoop1@master conf]# vi masters
10.210.74.152
[hadoop1@master conf]# sudo vi slaves
10.210.74.152
注:因为在伪分布模式下,作为master的namenode与作为slave的datanode是同一台服务器,所以配置文件中的ip是一样的。
2.1.6 编辑主机名
[hadoop1@master ~]# sudo vi /etc/hosts
# Do not remove the following line,
or various programs
that require network functionality will fail.
127.0.0.1 localhost
10.210.74.152 master
10.210.74.152 slave
2.1.7 修改PATH
修改自己的环境变量:
Vi
未修改前是:Export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin: $PATH
在$PATH前面加入Hadoop的路径,不能在后面。
改完后是:
Export
2.2.SSH配置
设置ssh为不需要手动输入密码的方式登陆
$ ssh-keygen -t dsa -P '' -f
~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub
>>
~/.ssh/authorized_keys
2.3启动Hadoop
2.3.1格式化namenode
[hadoop1@vm10110041 hadoop]$ hadoop namenode -format
12/07/23 16:12:53 INFO namenode.NameNode: STARTUP_MSG:
Re-format filesystem in /data0/test/hadoop/hdfs/name ? (Y or N) Y
12/07/23 16:12:54 INFO namenode.FSNamesystem: fsOwner=hadoop1,hadoop1
12/07/23 16:12:54 INFO namenode.FSNamesystem: supergroup=supergroup
12/07/23 16:12:54 INFO namenode.FSNamesystem: isPermissionEnabled=true
12/07/23 16:12:54 INFO common.Storage: Image file of size 97 saved in 0 seconds.
12/07/23 16:12:54 INFO common.Storage: Storage directory /data0/test/hadoop/hdfs/name has been successfully formatted.
12/07/23 16:12:54 INFO namenode.NameNode: SHUTDOWN_MSG:
2.2.2 启动hadoop所有进程
在/data0/test/hadoop/hadoop-0.20.2/bin 目录下,执行start-all.sh命令
启动完成后,可用jps命令查看hadoop进程是否启动完全。正常情况下应该有如下进程:
[hadoop1@vm10110041 hadoop]$ jps
6052 SecondaryNameNode
5796 NameNode
6480 Jps
6237 TaskTracker
6125 JobTracker
存在的一些问题:
1.将hadoop1添加到sudoers
su
输入root的口令,成功后就换成了root用户
继续输入命令:
chmod u+w /etc/sudoers
vi /etc/sudoers
在此行:root ALL=(ALL:ALL) ALL 后加一行:
hadoop ALL=(ALL:ALL) ALL
意思就是允许hadoop用户sudo运行任何命令
保存
chmod u-w /etc/sudoers
这是把sudoers文件的权限改回440, 即root用户通常也只读。Ubuntu linux的sudo 命令运行时会检查这个文件权限是否440, 如果不是440, sudo命令都没有办法工作。所以改完之后一定要改回原来的440.
2.将hadoop的用户和用户组都改成创建者
chown –R hadoop1:hadoop1 /data0/test/hadoop
这样就可以保存运行过程中产生的datanode和namenode等存储文件;
报错:
HADOOP报错Incompatible namespaceIDs
参看datanode的日志,发现Incompatible namespaceIDs报错datanode没有启动。
原因:每次namenode format会重新创建一个namenodeId,而/data0/test/hadoop/hdfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空hdfs一下的所有目录。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23849839/viewspace-1120098/ ,如需转载,请注明出处,否则将追究法律责任。