由于机器配置不高,所以安装时选mini,最小的。
1. 设置IP使centos可以上网,需修改如下文件:
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/resolv.conf
具体修改为:
1)修改:/etc/sysconfig/network,主要设置网关,具体如下
NETWORKING=yes
NETWORKING_IPV6=no
GATEWAY=192.168.1.1 // 网关
2)修改:/etc/sysconfig/network-scripts/ifcfg-eth0,主要设置IP等,具体如下
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.21
NETMASK=255.255.255.0
TYPE=Ethernet
HWADDR=XX:XX:XX:XX:XX:XX
ONBOOT=yes
3)修改:/etc/resolv.conf,主要设置DNS等,具体如下
nameserver 192.168.1.1 // 这里设置你具体的DNS,注意,这里不是nameserver=192.168.1.1
2 下面安装vwware tools
安装过程中遇到如下错误,
/usr/bin/perl: bad interpreter: No such file or directory,
解决如下:
1.查看版本号:uname -r得到内核版本,yum install 获取的内核版本 然后再yum install gcc
#uname -r
3.6.10-2.fc17.x86_64
#yum install kernel-devel-3.6.10-2.fc17.x86_64
#yum install gcc
通过以上操作,问题没有解决,网上说是缺少perl模块,于是执行下面的命令:
yum install perl
问题解决。
3. 安装图形化界面,尝试如下代码
执行“startx”报错“waiting for X server to shut down Server terminated successfully (0). Closing log file. ”
解决办法如下:
yum groupinstall "KDE Desktop"
执行以上代码,图形化界面安装成功.
4. 安装JDK
# chmod a+x jdk-1_5_0_14-linux-i586.bin ← 使当前用户拥有执行权限
# ./jdk-1_5_0_14-linux-i586.bin ← 选择yes直到安装完毕
# vi /etc/profile ←在最后加入以下几行:
export JAVA_HOME=/usr/java/jdk1.6.0_10
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
# reboot ← 重启机器配置生效
5.安装tomcat
把下载的apache-tomcat-7.0.19.tar.gz文件上传到服务器的根目录
#tar zxvf apache-tomcat-7.0.19.tar.gz
#mv apache-tomcat-7.0.19 apache-tomcat
#vim /etc/profile
在文件末尾添加:
export TOMCAT_HOME=/apache-tomcat/
#source /etc/profile
#cd /apache-tomcat/bin/
#chmod 777 *.sh
#./startup.sh // 可通过netstat -lnp | grep 8080 看端口是否开启,通过ip:8080访问判断是否安装成功.
这里会发现一个问题: 就是主机访问不了虚拟机tomcat的服务,在网上找了这个资料,问题解决:
在wmware中安装linux后安装好数据库,JDK及tomcat后启动服务,虚拟机中可以访问,但是主机却无法访问,但是同时主机和虚拟机之间可以ping的通,网上查阅资料后,解决方法是关闭虚拟机中的防火墙服务。桌面--管理--安全级别与防火墙,将防火墙设置为:disable即可。或用root登录后,执行
service iptables stop --停止
service iptables start --启动
但是在实际应用中,关闭防火墙降低的服务器的安全性,不能关闭防火墙。
如果在宿主机的dos窗口下telnet虚拟机的8080窗口,会失败,由此可以确定是虚拟机的8080窗口有问题,应该是被防火墙堵住了。因此修改防火墙设置即可。
修改Linux系统防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,如果要开放哪个端口,在里面添加一条
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
就可以了,其中 8080 是要开放的端口号,然后重新启动linux的防火墙服务,
/etc/init.d/iptables restart
6.下面打算安装hadoop
由于本人机器配置有限,所以下面到服务器上来安装,服务器共三台,系统用的是Ubuntu 11.04,上面的操作是为了熟悉环境,因为我是新手。
1)创建用户和组
groupadd test 创建test用户组
useradd user1 创建user1用户
passwd user1 设置user1的密码
useradd user2 创建user2用户
passwd user2 设置user2的密码
gpasswd -a user1 test 把user1用户添加到test用户组
gpasswd -a user2 test 同上 // 这里注意,在ubuntu上用useradd,不会自动创建主目录
// 这里注意,在ubuntu上用useradd,不会自动创建主目录
2) 配置ssh
比如,有两个机器,A机器ip为192.168.1.101 B机器ip为192.168.1.102,其中A为namenode节点所在的机器,B为datanode节点所在的机器
配置ssh的目的,是让A可以不用输入密码,就能直接访问B,访问方式为 ssh 用户名@192.168.1.102 ,用户名为安装hadoop所使用的用户名;
这里假设A、B机器均用用户名为hadoop的用户来安装。
具体步骤为:
以hadoop用户登录A机器,执行如下命令:
#ssh-keygen -t rsa -P "" // 创建ssh-key,,这里我们采用rsa方式
#cd ~/.ssh // (注:回车后会在~/.ssh/下生成两个文件:id_rsa和id_rsa.pub这两个文件是成对出现的)
#cat id_rsa.pub >> authorized_keys // 进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的
#scp ~/.ssh/id_rsa.pub hadoop@192.168.1.102:~/.ssh/ // 将这个文件拷贝到B机器,这里注意,B机器上是没有.ssh目录,这里我就索性在B机器上也执行了一下#ssh-keygen -t rsa -P "" ,估计直接mkdir一个.ssh目录应该也是可以的,这里没做尝试。
下面,以hadoop用户登录B机器,执行如下代码:
#cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys // 这里的作用就是让A、B机器上的authorized_keys 有相同的一个密钥,具体原理不懂的可以搜搜,这样就配置完成了。
测试:
以hadoop用户登录A机器,然后执行ssh hadoop@192.168.1.102,可直接登录到B机器上,则表示配置成功。
// 注意,这里是单向的,反过来 B机器到A机器是不成立的。
##### 下面的工作发现,安装hadoop需要双向信任,搞了半天,找到解决办法,具体为:
在A机器上执行ssh-keygen -t rsa -P ""和cat id_rsa.pub >> authorized_keys 命令后,直接把.ssh目录下的所有文件拷贝到B机器上的.ssh目录。
这样操作之后,A机器可以通过SSH直接登录B机器,B机器登录A机器的时候,需要一次yes,之后就也可以直接登录了。
====================================================================================================
###由于在公司只能抽时间搞,所以断断续续,现在在家,继续搞起,O(∩_∩)O~,自娱自乐。####
说明:上面的准备本来打算直接装集群环境的,现在改变主意了,先做单机的,然后改成集群的,一步步来,这样感觉学的踏实。
############单机版安装步骤#####################
1. hadoop版本,我选择0.20.2,老版本,资料多,熟悉以后再来尝试最新版本的。
1)以hadoop用户登录,IP地址为192.168.1.108,将hadoop.tar.gz拷贝到hadoop根目录,解压。
2)下面做配置,主要修改以下文件:
(1)配置conf/hadoop-env.sh,将 export JAVA_HOME=/usr/lib/jvm/java-6-openjdk 添加到文件末尾。
(2)core-site.xml,修改为以下内容:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.1.108:9000</value> // ip地址+端口号
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoopys/hadoop/tmp</value> ///home/hadoopys/hadoop/tmp,路径如果不存在的话,自己创建
</property>
</configuration>
(3) 修改 mapred-site.xml ,修改为以下内容:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.1.108:9001</value>
</property>
</configuration>
(4)修改hdfs-site.xml,修改为以下内容:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoopys/hadoop/filesystem/data</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoopys/hadoop/filesystem/name</value>
</property>
</configuration> // 目录不存在,自己创建
(5)修改masters文件和slave文件,两个文件的内容都改为 192.168.1.108
(6)切换到hadoop/bin目录下,执行如下命令:
./hadoop namenode -format
(7)接着执行./start-all.sh命令
(8)执行成功后,输入jps命令,看是否能列出hadoop相关进程,如果能,则说明部署成功,
这里还有别的检测办法,比如查看Log日志,命令为: vi ../logs/hadoop-hadoopys-namenode-yangsen-virtual-machine.log,如果没报错,则说明部署成功。
这个日志文件里,有500开头的端口号,网上多数说50030和50070,我这显示的是50010和50070,在浏览器中输入http://192.168.1.108:50070,可以看到一些信息,单机版的就安装到这了。
补充:按照以上来测试hadoop是否安装成功,感觉还是有点不靠谱,所以又想了想,还有别的更靠谱的办法来判断吗?
有。。。 那就是如果能执行dfs功能和mapreduce任务,就说明安装成功了,具体步骤如下:
# ./hadoop dfs -mkdir testin //创建一个testin目录,
# vi aaa.txt //里面随便输入点内容,如"123456",然后保存退出
# ./hadoop dfs -ls // 查看目录
>> 结果如下:
drwxr-xr-x - hadoopys supergroup 0 2013-05-16 11:17 /user/hadoopys/output
drwxr-xr-x - hadoopys supergroup 0 2013-05-16 11:25 /user/hadoopys/testin
drwxr-xr-x - hadoopys supergroup 0 2013-05-16 11:16 /user/hadoopys/yshdoop
#./hadoop dfs -put aaa.txt /user/hadoopys/testin // 将aaa.txt 上传到 /user/hadoopys/testin目录下
#cd .. // 切换到hadoop目录,主要为了直接访问hadoop-0.20.2-examples.jar
#bin/hadoop jar hadoop-0.20.2-examples.jar wordcount /user/hadoopys/testin/aaa.txt /user/hadoopys/output2 // 执行自带worcount例子,output2不能存在
>>执行结果如下:
13/05/16 11:31:09 INFO input.FileInputFormat: Total input paths to process : 1
13/05/16 11:31:10 INFO mapred.JobClient: Running job: job_201305161032_0003
13/05/16 11:31:11 INFO mapred.JobClient: map 0% reduce 0%
13/05/16 11:31:22 INFO mapred.JobClient: map 100% reduce 0%
13/05/16 11:31:34 INFO mapred.JobClient: map 100% reduce 100%
13/05/16 11:31:36 INFO mapred.JobClient: Job complete: job_201305161032_0003
13/05/16 11:31:36 INFO mapred.JobClient: Counters: 17
13/05/16 11:31:36 INFO mapred.JobClient: Job Counters
13/05/16 11:31:36 INFO mapred.JobClient: Launched reduce tasks=1
13/05/16 11:31:36 INFO mapred.JobClient: Launched map tasks=1
13/05/16 11:31:36 INFO mapred.JobClient: Data-local map tasks=1
13/05/16 11:31:36 INFO mapred.JobClient: FileSystemCounters
13/05/16 11:31:36 INFO mapred.JobClient: FILE_BYTES_READ=65
13/05/16 11:31:36 INFO mapred.JobClient: HDFS_BYTES_READ=210
13/05/16 11:31:36 INFO mapred.JobClient: FILE_BYTES_WRITTEN=162
13/05/16 11:31:36 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=42
13/05/16 11:31:36 INFO mapred.JobClient: Map-Reduce Framework
13/05/16 11:31:36 INFO mapred.JobClient: Reduce input groups=5
13/05/16 11:31:36 INFO mapred.JobClient: Combine output records=5
13/05/16 11:31:36 INFO mapred.JobClient: Map input records=34
13/05/16 11:31:36 INFO mapred.JobClient: Reduce shuffle bytes=65
13/05/16 11:31:36 INFO mapred.JobClient: Reduce output records=5
13/05/16 11:31:36 INFO mapred.JobClient: Spilled Records=10
13/05/16 11:31:36 INFO mapred.JobClient: Map output bytes=346
13/05/16 11:31:36 INFO mapred.JobClient: Combine input records=34
13/05/16 11:31:36 INFO mapred.JobClient: Map output records=34
13/05/16 11:31:36 INFO mapred.JobClient: Reduce input records=5
>>>> 以上说明,hadoop安装成功!
######################下面来配置集群的#################################
具体步骤如下:
1.保证ssh双向互通, 我这里把192.168.1.108作为namenode,192.168.1.111作为datanode
2.在108上,修改salves配置文件,将192.168.1.111添加进去。
3.然后把108机器上部署好的hadoop拷贝一份到 111机器上。
4.在108上格式化dfs,然后start-all。
总结: 至此,hadoop的环境配置好了,下面准备看书,先看hadoop“权威指南”。