hadoop2.6.4集群搭建详细教程

安装过程中遇到的坑:hadoop 2.5版本之后都是采用64编译,所以要安装搭建2.5之上版本的集群,请安装64操作系统,64位jdk。

用到的软件:VMware用来在window下安装linux虚拟机。安装好虚拟机之后,可以直接复制虚拟机。下面我搭建集群的时候我只安装过一次虚拟机,其他两个节点都是复制出来的。

可能用到的软件:winSCP:用来将文件从window传到虚拟机上,当然其他很多工具也行。
Xshell:远程连接虚拟机,直接操作,方便快捷。secureCRT也可以

1.VMware,系统采用ubuntu12.0.4,网络采用 桥接模式

IP配置
Master:192.168.1.21 
Slave1:192.168.1.22
Slave2:192.168.1.23

安装ssh,
命令:sudo apt-get install ssh。
然后通过winSCP上传jdk到虚拟机,必须安装了ssh才能使用winSCP上传文件到虚拟机中。可以通过xshell等软件连接上虚拟机,这样就不必打开虚拟机终端来执行了命令。

上传jdk到/home/hadoop文件加下



JDK安装:
解压jdk:   tar zxvf jdk-7u79-linux-x64.gz
jdk1.7.0_79 放到/app文件夹下去并命名为jdk7:mv jdk1.7.0_79/ /app/jdk7

配置环境变量:sudo vim /etc/profile 打开profile文件,并将下面的粘贴到最后,红框的是实际jdk的安装路径。这里我的是/app/jdk7

#set java enviroment
JAVA_HOME=/app/jdk7
CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib 
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin 
export PATH CLASSPATH JAVA_HOME

然后使profile文件生效:source /etc/profile

验证jdk是否安装成功:java -version


安装成功jdk后,我们可以将虚拟机复制成三分,这样就 每个节点都安装好了jdk了。省去每个节点都去安装jdk.

然后设置各个节点的主机名, 修改之后可能要重启主机名的变更才会生效
master:修改/etc/hostname 文件为master。下面截图就是hostname的内容。

slave1:做同样的操作。改为slave1.


slave2:同样操作


分别修改的 三个节点(每个节点的都要修改)的 /etc/hosts文件,增加下面的配置
192.168.1.21 master
192.168.1.22 slave1
192.168.1.23 slave2


安装SSH 免密码登陆(原理是这样的,master生成公钥 id_rsa.pub,然后将这些公钥分别放到 自己和slave authorized_keys中,那么master就可以免密码登陆 自己和slave 节点了。 )

这个操作是要让 Master 节点可以无密码 SSH 登陆到各个 Slave 节点上。

首先生成 Master 节点的公匙,在 Master 节点的终端中执行(因为改过主机名,所以还需要删掉原有的再重新生成一次):

   
   
cd ~/. ssh # 如果没有该目录,先执行一次ssh localhost
rm ./id_rsa* # 删除之前生成的公匙(如果有)
ssh-keygen -t rsa # 一直按回车就可以
Shell 命令

让 Master 节点需能无密码 SSH 本机,在 Master 节点上执行:

   
   
cat ./id_rsa.pub >> ./authorized_keys
Shell 命令

完成后可执行 ssh Master 验证一下(可能需要输入 yes,成功后执行 exit 返回原来的终端)。接着在 Master 节点将上公匙传输到 Slave1 节点:

   
   
scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/
Shell 命令

scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。执行 scp 时会要求输入 Slave1 上 hadoop 用户的密码(hadoop),输入完成后会提示传输完毕,如下图所示:

通过scp向远程主机拷贝文件通过scp向远程主机拷贝文件

接着在 Slave1 节点上,将 ssh 公匙加入授权:

   
   
mkdir ~/. ssh # 如果不存在该文件夹需先创建,若已存在则忽略
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub

Slave2节点同上。

安装hadoop
通过winscp上传hadoop的安装包到master虚拟机,然后解压到/app下。然后先配置环境变量,这样就能shell的任意地方执行hadoop命令.
在/etc/profile文件增加下列配置,其中红框的为hadoop安装目录,结合自己情况。我这里hadoop是在/app文件夹下的
#set hadoop enviroment
export PATH=$PATH:/app/hadoop/bin:/app/hadoop/sbin


配置hadoop
/app/hadoop/etc/hadoop/hadoop-env.sh 
/app/hadoop/etc/hadoop/yarn-env.sh 
/app/hadoop/etc/hadoop/core-site.xml 
/app/hadoop/etc/hadoop/hdfs-site.xml 
/app/hadoop/etc/hadoop/yarn-site.xml 
/app/hadoop/etc/hadoop/mapred-site.xml 
/app/hadoop/etc/hadoop/slaves

hadoop-env.sh 配置:
要把 export JAVA_HOME= ${JAVA_HOME} 改成下面的绝对路径:
export JAVA_HOME= /usr/java

yarn-env.sh配置:也是要换成绝对路径:
export JAVA_HOME=/usr/java

core-site.xml配置:

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/app/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

hdfs-site.xml 配置:
<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/app/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/app/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

yarn-site.xml配置:
<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

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>
</configuration>


slaves配置:


hadoop配置好之后要讲hadoop整个文件分别复制到其他slave节点中去。保证每台机器都有:
/app/jdk   有jdk,运行hadoop
/app/hadoop   hadoop
/etc/profile   环境变量
/etc/hosts   

格式化hdfs:
hdfs namenode -format


启动hadoop:start-dfs.sh 
 start-yarn.sh
停止hadoop:stop-dfs.sh 
 stop-yarn.sh

要是启动过程中遇到,权限不够的请修改权限。我启动的时候就遇到slave1跟slave2权限不够后来检查是slave的hadoop下的bin和sbin
文件夹下脚本没有执行权限。增加执行权限,命令 chmod 755 /app/hadoop/sbin/*    chmod 755 /app/hadoop/bin/*         
启动中要是遇到JAVA_HOME not set的问题,多半是 hadoop的配置文件  hadoop-env.sh   yarn-env.sh中JAVA_HOME没有用绝对路径。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值