1. 系统环境配置
1.1 用到的工具
SFTP客户端:FileZilla
宿主操作系统:Ubuntu14.04.2 LTS X64
KVM操作系统:CentOS6.6 minimal X64
1.2 操作系统及机器名,IP地址等
机器名(hostname) | 角色 | IP | 操作系统 |
lab1.hadoop | Master | 192.168.122.2 | CentOS 6.6 minimal |
lab2.hadoop | Slave | 192.168.122.3 | CentOS 6.6 minimal |
lab3.hadoop | Slave | 192.168.122.4 | CentOS 6.6 minimal |
lab4.hadoop | Slave | 192.168.122.5 | CentOS 6.6 minimal |
lab5.hadoop | Manager (monitor vms) | 192.168.122.6 | CentOS 6.6 minimal |
1.3 更新各个系统
在每个系统中执行yum update更新系统。
1.4在每个系统增加用户hadoop并设置密码
adduser hadoop
passwd hadoop
1.5 安装vsftp
执行命令:yuminstall vsftpd
关闭防火墙:service iptables stop
允许21端口通行:
vi/etc/sysconfig/iptables
添加两条
-A INPUT -mstate --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 30000:30100 -j ACCEPT
1.6 安装OracleJDK
从Oracle下载JDK1.7.0_75版本:jdk-7u75-linux-264.tar.gz
在每台机器上执行下面的命令:
mkdir /usr/lib/jvm
tarzxvf jdk-7u75-linux-264.tar.gz -C /usr/lib/jvm
vi/etc/profile 并在最后添加
#set java environment
export JAVA_HOME=/usr/java/jdk1.7.0_75
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
切换系统默认jdk
update-alternatives --install /usr/bin/java java/usr/lib/jvm/jdk1.7.0_75/bin/java 300
update-alternatives --install /usr/bin/javac javac/usr/lib/jvm/jdk1.7.0_75/bin/javac 300
查看并设置缺省jdk
update-alternatives --config java
1.7 实现ssh无密码登录
系统默认已经安装了openssh但未安装rsync,可以通过下面命令查看:
rpm -qa |grep openssh
rpm -qa |grep rsync
如未安装,可使用下面命令安装:
yum -y install openssh
yum -y install rsync
然后,在每台机器上以hadoop用户执行下面命令:
ssh-keygen –t rsa –P ''
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
重启sshd: service sshd restart
将lab1(即Master)机器的rsa证书复制到所有Slave机器上:
scp ~/.ssh/id_rsa.pub hadoop@192.168.122.3:~/
scp ~/.ssh/id_rsa.pub hadoop@192.168.122.4:~/
scp ~/.ssh/id_rsa.pub hadoop@192.168.122.5:~/
在每台Slave机器上加入Master的证书:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub
将每台Slave机器上的rsa证书复制到Master机器上:
依次在Slave机器和主机上执行下面的命令:
Slave机器:scp ~/.ssh/id_rsa.pubhadoop@192.168.122.2:~/
Master机器:将Slave的rsa证书加入到Master机器的验证证书中:
cat ~/id_rsa.pub >> ~/.ssh/authorized_key
rm ~/id_rsa.pub
修改每台机器的ssh配置文件
vi/etc/ssh/sshd_config
将下面配置前的#去掉:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
将每台机器的ssh重启:service sshd restart
如果上机步聚全部正确,則在Master机器上可以ssh所有Slave机器而不需要密码:
ssh 192.168.122.3
ssh 192.168.122.4
ssh 192.168.122.5
同时,在每台Slave机器上,都可以ssh到Mster服务器而不需要密码:
ssh 192.168.3.2
至此,基础环境配置完成。
2. 编译hadoop2.6.0
目前在apache网站上提供的下载只有x86版本的,如果要使用x64版本,需自已编译源码,步聚如下:
2.1为了保证集群计算机的清洁,这里使用另外一台计算机来编译hadoop,同时这台计算机负责管理与监控:这里使用lab5.hadoop机器。
2.2 设置编译环境:
yum install cmake lzo-devel zlib-devel gcc gcc-c++ autoconf automake libtoolncurses-devel openssl-devel libXtst
2.3 安装JDK(见1.5)
2.4编译并安装protobuf
从https://github.com/google/protobuf/上下载2.5.0版本,由于google在国内无法访问,所以最好下载Release版本,否则在编译protobuf时需要下载gtest而导致编译无法进行。
下载后解压:tar xvf protobuf-2.5.0.tar.gz
编译:
cdprotobuf-2.5.0
./configure
make
makeinstall
ldconfig
检查是否安装:protoc--verion
2.5 安装maven
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.3.1/binaries/apache-maven-3.3.1-bin.tar.gz
tar zxvfapache-maven-3.3.1-bin.tar.gz -C /usr/lib/
vi /etc/profile
export MAVEN_HOME=/usr/lib/apache-maven-3.3.1
export PATH=$PATH:$MAVEN_HOME/bin
2.6 编译hadoop
wget http://mirror.bit.edu.cn/apache/hadoop/core/hadoop-2.6.0/hadoop-2.6.0-src.tar.gz
cd hadoop-2.6.0-src
mvn package -DskipTests -Pdist,native -Dtar
编译成功后会打包,放在hadoop-dist/target
将hadoop-2.6.0.tar.gz复制到lab1机器上。
3. 安装hadoop
解压hadoop压缩文件到/usr/目录下:
tar zxvfhadoop-2.6.0.tar.gz -C /usr/
4. 配置hadoop
进入到hadoop目录:cd /usr/hadoop-2.6.0
4.1编辑hadoop-env.sh文件
vi /usr/hadoop-2.6.0/etc/hadoop/hadoop-env.sh
将26行的exportJAVA_HOME=${JAVA_HOME}修改成export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_75
4.2配置/usr/hadoop-2.6.0/etc/hadoop/core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
<description></description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.122.2:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
</configuration>
4.3配置/usr/hadoop-2.6.0/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.122.2:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
4.3配置/usr/hadoop-2.6.0/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>192.168.122.2:50030</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.122.2:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.122.2:19888</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://192.168.122.2:9001</value>
</property>
</configuration>
4.4配置/usr/hadoop-2.6.0/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>lab1.hadoop</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.122.2:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.122.2:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.122.2:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.122.2:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.122.2:8088</value>
</property>
</configuration>
4.5将hadoop复制各个Slave机器上:
scp /usr/hadoop2.6.0hadoop@192.168.122.3:/usr/
scp /usr/hadoop2.6.0hadoop@192.168.122.4:/usr/
scp /usr/hadoop2.6.0hadoop@192.168.122.5:/usr/
4.5配置各个机器的环境变量(Master和Slave同样配置)
vi /etc/profile
在文件最后添加:
export HADOOP_HOME=/usr/hadoop-2.6.0
export PATH=$PATH:$HADOOP_HOME/bin
4.6 配置Master机器:
vi /usr/hadoop-2.6.0/etc/hadoop/slaves
在文件中清空,并添加如下内容:
lab2.hadoop
lab3.hadoop
lab4.hadoop
4.7在所有机器上(Master和所有Slave机器)配置hosts文件
vi /etc/hosts
在文件开始处添加如下:
192.168.122.2lab1.hadoop lab1
192.168.122.3lab1.hadoop lab2
192.168.122.4lab1.hadoop lab3
192.168.122.5lab1.hadoop lab4
4.8 格式化dfs目录
在Master机器上运行:hadoop namenode -format
4.9 启动hadoop
cd /usr/hadoop-2.6.0/sbin
./start-all.sh
./mr-jobhistory-daemon.sh
4.10 查看hadoop
http://192.168.122.2:8088
http://192.168.122.2:19888