1 系统环境说明
CentOS-6.5-x86_64-minimal
192.168.137.101 master
192.168.137.102 slave1
192.168.137.103 slave2
2 安装前的准备工作
2.1 配置网络
分别进入三台机器的网络配置文件,进入
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:9B:9C:E1
TYPE=Ethernet
UUID=b711da3a-e25f-4dec-be15-24b7f169a200
ONBOOT=yes //这个改成yes,这不要是no的话,网卡没法启动
NM_CONTROLLED=yes
#BOOTPROTO=dhcp
BOOTPROTO=static
IPADDR=192.168.137.101
NETMASK=255.255.255.0
GATEWAY=192.168.137.1
保存后,启动网卡 service network restart
2.2 配置机器名
分别配置三台机器的名称master,slave1,slave2,进入vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master.localdomain
NETWORKING=yes
HOSTNAME=master.localdomain
保存后,无需重启,在每台机器上执行:hostname 机器名,重新登录即可
2.3 配置域名服务
vi /etc/resolv.conf
nameserver 192.168.137.1
nameserver 192.168.137.1
2.4 配置hosts
vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.101 master.localdomain master
192.168.137.102 slave1.localdomain slave1
192.168.137.103 slave2.localdomain slave2
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.101 master.localdomain master
192.168.137.102 slave1.localdomain slave1
192.168.137.103 slave2.localdomain slave2
2.5 安装基本的软件
yum -y install wget zip unzip man gcc gcc-c++ make setuptool automake lzo-devel svn libtool
yum install wget
yum install zip
yum install unzip
yum install man
yum install gcc
yum install zip
yum install unzip
yum install man
yum install gcc
yum install gcc-c++
yum install make
yum install setuptool
yum install make
yum install setuptool
yum install automake
yum install lzo-devel
yum install svn
yum install libtool
安装GNOME图形界面(喜欢图形界面的话可以安装下面):
yum -y groupinstall "X Window System"
Desktop"
"Chinese Support"
yum groupinstall "X Window System"
yum groupinstall "Desktop"
yum groupinstall "Chinese Support"
安装完成后,用"init 5"即可启动图形界面。
yum groupinstall "X Window System"
yum groupinstall "Desktop"
yum groupinstall "Chinese Support"
安装完成后,用"init 5"即可启动图形界面。
2.6
关闭防火墙
service iptables stop //关闭防火墙
service iptables disable //彻底关闭防火墙
2.7
检查ssh安装情况,如果没有则安装ssh
systemctl status sshd.service --查看ssh状态
2.8 创建用户
useradd hadoop //创建用户
passwd hadoop //设置用户密码
2.8
配置ssh无密钥登录
下面是在master上面的操作
# su hadoop --切换到hadoop用户
$ cd ~ --打开用户文件夹
$ ssh-keygen -t rsa -P '' --生成密码对,/home/hadoop/.ssh/id_rsa和/home/hadoop/.ssh/id_rsa.pub
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys --把id_rsa.pub追加到授权的key里面去
$ chmod 600 ~/.ssh/authorized_keys --修改权限
$ su --切换到root用户
# vim /etc/ssh/sshd_config --修改ssh配置文件
RSAAuthentication yes #启用RSA认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径
# su hadoop --切换到hadoop用户
$ scp ~/.ssh/id_rsa.pub hadoop@192.168.137.102:~/ --把公钥复制所有的Slave机器上
$ scp ~/.ssh/id_rsa.pub hadoop@192.168.137.103:~/
下面是在slave1上面的操作
# su hadoop --切换到hadoop用户
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys --追加到授权文件"authorized_keys"
$ chmod 600 ~/.ssh/authorized_keys --修改权限
$ su --切换回root用户
# vim /etc/ssh/sshd_config --修改ssh配置文件
RSAAuthentication yes #启用RSA认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径
# su hadoop --切换到hadoop用户
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys --追加到授权文件"authorized_keys"
$ chmod 600 ~/.ssh/authorized_keys --修改权限
$ su --切换回root用户
# vim /etc/ssh/sshd_config --修改ssh配置文件
RSAAuthentication yes #启用RSA认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径
验证,在master 上执行:ssh slave1, ssh slave2,这时候是不需要密码
3 安装必须的软件
- 64位linux系统。我使用的是 CentOS
- JDK 1.7+。注:使用1.7即可,如果是1.8则会编译失败,1.6没有试过,看网上大牛的帖子说也能过
- maven-3.2.5。 这是apache的一个产品,hadoop的编译要就是3.0以上
- protobuf 注:谷歌的产品,最好是提前百度准备一下这个文件
- hadoop-2.5.2-src 这个可以到Apache的官网上去下载
- ant-1.9.4 这个也是Apache的,在文章最后附的参考链接中有关于下载的百度网盘地址
3.1 安装JDK
cd /home/hadoop/tools/
cp jdk-7u75-linux-x64.tar.gz / usr/java
cd /usr/java
tar -zxvf jdk-7u75-linux-x64.tar.gz
配置环境变量:vi /etc/profile
配置环境变量:vi /etc/profile
#add jdk
export JAVA_HOME=/usr/java/jdk1.7.0_75
export PATH=.:$PATH:$JAVA_HOME/bin
使环境变量生效:source /etc/profile
检测安装是否成功:
java -version
javac -version
export PATH=.:$PATH:$JAVA_HOME/bin
使环境变量生效:source /etc/profile
检测安装是否成功:
java -version
javac -version
3.2 安装maven
cd /home/hadoop/tools/
mkdir /usr/maven
cp apache-maven-3.2.5-bin.tar.gz /usr/maven
cd /usr/maven
tar -zxvf apache-maven-3.2.5-bin.tar.gz
配置环境变量:vi /etc/profile
#add maven
export MAVEN_HOME=/usr/maven/apache-maven-3.2.5
export PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
使环境变量生效:source /etc/profile
export MAVEN_HOME=/usr/maven/apache-maven-3.2.5
export PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
使环境变量生效:source /etc/profile
验证:
mvn -version
3.3 安装
protobuf
cd /home/hadoop/tools/
mkdir /usr/protobuf
tar -zxvf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0/
./configure --prefix=/usr/protobuf
//配置你安装的路径
make
make install
配置环境变量:vi /etc/profile
#add protobuf
export PROTOBUF_HOME=/usr/protobuf/
export PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$PROTOBUF_HOME/bin
使环境变量生效:source /etc/profile
export PROTOBUF_HOME=/usr/protobuf/
export PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$PROTOBUF_HOME/bin
使环境变量生效:source /etc/profile
验证:
protoc --version
3.4 安装CMAKE
yum install cmake
yum install openssl-devel
yum install ncurses-devel
3.5 安装
Ant
cd /home/hadoop/tools/
mkdir /usr/ant
cp apache-ant-1.9.4-bin.tar.gz /usr/ant
cd /usr/ant
tar -zxvf apache-ant-1.9.4-bin.tar.gz
配置环境变量:vi /etc/profile
#add ant
export ANT_HOME=/usr/ant/apache-ant-1.9.4
export PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$PROTOBUF_HOME/bin:$ANT_HOME/bin
使环境变量生效:source /etc/profile
export ANT_HOME=/usr/ant/apache-ant-1.9.4
export PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$PROTOBUF_HOME/bin:$ANT_HOME/bin
使环境变量生效:source /etc/profile
验证:
ant -version
3.6 安装
findbugs
cd /home/hadoop/tools/
mkdir /usr/findbugs
cp findbugs-3.0.0.tar.gz /usr/findbugs
cd /usr/findbugs
tar -zxvf findbugs-3.0.0.tar.gz
配置环境变量:vi /etc/profile
#add findbugs
export FINDBUGS_HOME=/usr/findbugs/findbugs-3.0.0
export FINDBUGS_HOME=/usr/findbugs/findbugs-3.0.0
export PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$PROTOBUF_HOME/bin:$ANT_HOME/bin:$FINDBUGS_HOME/bin
使环境变量生效:source /etc/profile
使环境变量生效:source /etc/profile
验证:
4
编译hadoop
所有的机器上都要安装
hadoop
,现在就先在
Master
服务器安装,然后其他服务器按照步骤重复进行即可。安装和配置
hadoop
需要以
"root"
的身份进行。
4.1
解压hadoop源码包
cd /home/hadoop/tools/
tar -zxvf hadoop-2.5.2-src.tar.gz
cd /root/hadoop-2.5.2-src/
cd hadoop-2.5.2-src
vim BUILDINT.txt
进入文件夹里面,里面有一个文件BUILDINT.txt,打开即可看见里面关于编译hadoop的一些环境要求
4.2 编译hadoop(一定要保证网络畅通)
cd hadoop-2.5.0-src
mvn package -Pdist,native,docs -DskipTests -Dtar
mvn package -Pdist,native,docs -DskipTests -Dtar
查看编译结果
同样在刚刚进行编译的那个目录下,有一个 hadoop-dist文件夹,进入里面的target文件夹,然后就可以看到编译成功64位的hadoop文件,解压后的在 hadoop-2.5.2 这个文件夹中,同时还生成了一个压缩包:hadoop-2.5.2-tar.gz 这个压缩包可以拷贝到别的机器上进行安装
4.3 安装与配置hadoop
tar -zxvf
hadoop-2.5.2-tar.gz
cp -r hadoop-2.5.2 /opt/
chown -R hadoop:hadoop /opt/hadoop-2.5.2
vi /etc/profile
#add hadop
export HADOOP_HOME=/opt/hadoop-2.5.2
export PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$PROTOBUF_HOME/bin:$ANT_HOME/bin:$FINDBUGS_HOME/bin:$HADOOP_HOME/bin
export PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$PROTOBUF_HOME/bin:$ANT_HOME/bin:$FINDBUGS_HOME/bin:$HADOOP_HOME/bin
使环境变量生效:source /etc/profile
su hadoop
cd /opt/hadoop-2.5.0
mkdir -p dfs/name
mkdir -p dfs/data
mkdir -p tmp
cd /opt/hadoop-2.5.0
mkdir -p dfs/name
mkdir -p dfs/data
mkdir -p tmp
4.4 配置所有slave节点
cd etc/hadoop
vi slaves
slave1.localdomain
slave2.localdomain
4.5 修改hadoop-env.sh和yarn-env.sh
分别进入这两个文件修改Java环境路径
export JAVA_HOME=/usr/java/jdk1.7.0_75
4.6 修改core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/hadoop-2.5.2/tmp</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value> </value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value> </value>
</property>
</configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/hadoop-2.5.2/tmp</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value> </value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value> </value>
</property>
</configuration>
4.7 修改hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop-2.5.2/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop-2.5.2/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop-2.5.2/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop-2.5.2/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
4.8
修改mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
4.9 配置yarn-site.xml(这里注意内存和cpu的设置)
<configuration>
<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>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<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>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name> yarn.nodemanager.resource.cpu-vcores </name>
<name> yarn.nodemanager.resource.cpu-vcores </name>
<value>1</value>
</property>
</configuration>
</property>
4.10
同步代码到其他机器
1.
同步配置代
码
先在 slaves 的机器上也 创 建
先在 slaves 的机器上也 创 建
cd /opt/
scp -r hadoop-2.5.2 root@192.168.137.102:/opt/
scp -r hadoop-2.5.2 root@192.168.137.102:/opt/
scp -r hadoop-2.5.2 root@192.168.137.103:/opt/
2. 同步 /etc/profile
scp -r /etc/profile root@hadoop2:/etc/profile
2. 同步 /etc/profile
scp -r /etc/profile root@hadoop2:/etc/profile
4.11 格式化namenode(只在master上进行)
hadoop namenode -format
4.12
启动hdfs
cd /opt/
hadoop-2.5.2/sbin/
启动
hdfs
执行
start-dfs.sh
开 启 hadoop dfs 服 务
启动 Yarn
开 启 yarn 资 源管理服 务
start-yarn.sh
启动httpfs
开
启
httpfs
服
务
httpfs.sh start
httpfs.sh start
使得
对外
可以提高
http
的
restful
接口服
务