本人采用三台虚拟机搭建hadoop环境,其中在/etc/hosts文件中的配置为
主机Ip1 hadoop1(用作master)
主机Ip2 hadoop2(用作slave)
主机Ip3 hadoop3(用作slave)
搭建过程:
1、创建hadoop用户
(1)、搭建集群的时候,最好在统一用户下操作,包括hadoop问价夹的位置,java环境变量的位置等,在一台机器部署好了基本环境之后,如果是vmware的话,直接克隆一下就可以了。
创建hadoop用户的时候,网上有很多方法,实际上,本人在ubuntu 14.04上测试的时候,只要进入root下执行
adduser hadoop 就可以了,它会自动创建一个同名的(即hadoop)组,也会创建一个hadoop用户,一步一步来,设置密码等操作。
(2)、在/etc/sudoers中,在root ALL=(ALL:ALL) ALL下面添加
hadoop ALL=(ALL:ALL) ALL
这样,hadoop用户可以使用sudo命令了
2、设置java环境
本人使用的是ubuntu 14.04 i386版本,不是64位操作系统,所以在找jdk8的时候,非常麻烦,从官网上下载tar.gz时候,下载的总是gz文件,看起来好麻烦,对于特别懒的同学,就不想研究怎么安装gz了,所以找了半天tar.gz文件,大家可以通过这个链接下载http://download.csdn.net/download/aqtata/9410831,如果你是64位操作系统,直接从官网下载tar.gz就可以了。
配置java环境变量,网上有说在/etc/profile下配置的,又说在~/.bashrc中配置的,其实两者是有区别的,在/etc/profile下配置,所有的登陆用户,都可以访问java,如果在~./bashrc中配置,只能是当前用户访问,所以大家都在/etc/profile中配置就可以了,配置的内容:
export JAVA_HOME=/usr/java
export PATH=/$JAVA_HOME/bin:$PATH
export CLASSPATH=/$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
然后执行:source /etc/profile
配置后,不要忘记修改默认的jdk
方法:
输入sudoupdate-alternatives --display java可查看信息默认的jdk信息,刚开始因为没有,提示错误:noalternatives for java
sudo update-alternatives --install /usr/bin/java java 你JDK的路径/java(如/usr/java/bin/java) 300(优先级)
sudo update-alternatives --install /usr/bin/javac javac 你JDK的路径/javac(/usr/java/bin/javac) 300(优先级)
若有多个版本,需要修改默认的,则输入
sudo update-alternatives --config java
sudo update-alternatives --config javac
3、安装ssh
因为hadoop的master和slave之间使用过ssh访问的,所以大家一定要安装ssh,在安装ssh的时候,可能由于本机已经安装了,或者其他的什么问题,导致最后执行ssh localhost时出现connect 22端口错误,这个时候,请耐心安装,再耐心安装,总会成功的
安装方法sudo apt-get install ssh,这就话就可以了
安装后,设置ssh免登录,ssh免登录的过程如下
首先cd ~,切换到你的home主目录
然后ls –a查看是否有隐藏文件夹.ssh,如果没有,说明ssh安装可能出现问题
第三,执行:sh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
第四,执行:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
第五,执行ssh localhost测试是否成功
4、开始搭建hadoop环境
1、到官网http://mirrors.hust.edu.cn/apache/hadoop/common/stable/下载稳定版,我安装的时候,是2.7.2版本
2、解压到主目录(什么目录无所谓,关键是master和slave是相同目录就可以,毕竟方便很多)
3、创建几个文件夹
在hadoop-2.7.2目录下创建几个文件夹:
mkdir tmp
mkdir dfs
mkdir dfs/name
mkdir dfs/data
4、开始配置文件:
4.1修改core-site.xml(位置:/home/steven/hadoop-2.7.2/etc/hadoop)
在<configuration></configuration>中添加如下内容:
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/steven/hadoop-2.7.2/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
4.2修改hdfs-site.xml位置同上
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/steven/hadoop-2.7.2/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/ steven/hadoop-2.7.2/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop1:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
4.3修改mapred-site.xml,2.7.2中有一个mapred-site.xml.template模板,我们只要执行mv mapred-site.xml.templatemapred-site.xml就可以了,添加内容如下:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop1:19888</value>
</property>
4.4修改yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop1:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>768</value>
</property>
4.5配置/home/steven/hadoop-2.7.2/etc/hadoop目录下hadoop-env.sh、yarn-env.sh的JAVA_HOME,否则启动时会报error
添加,或修改为:export JAVA_HOME=/usr/java(你的jdk目录)
这里需要注意,在hadoop-env.sh中已经有export JAVA_HOME=${JAVA_HOME},这句话也要修改为exportJAVA_HOME=/usr/java(你的jdk目录)
4.6配置/home/steven/hadoop-2.7.2/etc/hadoop目录下slaves
其中的内容为:(这是两台slave,我用的三台机器搭建的hadoop环境,hadoop1是master,hadoop2和hadoop3是slave)
#localhost
hadoop2
hadoop3
5、将hadoop文件夹scp到其他两台机器上
6、在master上 启动
主服务器上执行bin/hdfs namenode -format
进行初始化
可以使用jps查看信息
sbin目录下执行 ./start-all.sh
再使用jps查看信息
停止的话,输入命令,sbin/stop-all.sh
7 查看
在浏览器中输入
hadoop1:8088/
就可以了。