Hadoop2.6.0集群搭建

1. 基本概念

2. 基础配置

2.1 三台服务器(可以使用虚拟机)

系统:Ubuntu14.04 64位 Server版
Jdk版本:jdk1.7.0_79
Hadoop版本: 2.6.0
Zookeeper版本: 3.4.6

2.2 安装配置规划

主机名IP安装的软件进程
gvm39192.168.3.141jdk、hadoop、zookeeperNameNode、DFSZKFailoverController、DataNode、NodeManager、JournalNode、QuorumPeerMain
gvm40192.168.3.142jdk、hadoop、zookeeperNameNode、DFSZKFailoverController、DataNode、NodeManager、JournalNode、QuorumPeerMain
gvm41192.168.3.143jdk、hadoop、zookeeperDataNode、NodeManager、JournalNode、QuorumPeerMain、ResourceManager

2.3 每台主机配置

创建hadoop用户

$ sudo adduser hadoop
# 提示输入密码,剩下的都是一直默认即可

将hadoop用户添加位sudo管理员组,编辑/etc/sudoer文件

$ sudo vim /etc/sudoers

将以下添加到”root ALL=(ALL:ALL) ALL”下面

hadoop  ALL=(ALL:ALL) ALL

保存后退出

注销本用户,以hadoop用户身份登录。

2.4 SSH免密码登录

创建密钥对

$ ssh-keygen -t rsa -P ''
# 默认保存到/home/hadoop/.ssh/

查看”/home/hadoop/”下是否有”.ssh”文件夹,且”.ssh”文件下是否有两个刚生产的无密码密钥对。

$ ls /home/hadoop/.ssh/

把id_rsa.pub追加到授权的key里面去。

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

在其他两台电脑上分别生成密钥对

分别将自己主机的公钥发给其他两台主机

$ scp .ssh/id_rsa.pub  hadoop@192.168.3.142:/home/hadoop
$ scp .ssh/id_rsa.pub  hadoop@192.168.3.143:/home/hadoop

将其他主机发过来的公钥加入到~/.ssh/authorized_keys中

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

以上配置完成,三台主机之间访问就不需要密码了。

3. 开始安装

注: 先在一台主机上安装

3.1 安装jdk

3.1.1 下载jdk

$ wget http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz

3.1.2 安装jdk

# 解压jdk-7u79-linux-x64.tar.gz
$ tar -zxvf jdk-7u79-linux-x64.tar.gz
# 拷贝解压后的文件夹jdk1.7.0_79移动到/usr/local/目录
$ sudo mv jdk1.7.0_79/ /usr/local/

3.1.3 配置jdk环境变量

编辑/etc/bash.bashrc文件

$ sudo vim /etc/bash.bashrc

将一下添加到bash.bashrc文件到最后

# set jdk
export JAVA_HOME=/usr/local/jdk1.7.0_79
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

保存后退出并执行以下命令,使刚才的配置文件生效

$ source /etc/bash.bashrc

查看jdk是否安装正确

$ java -version

将本主机的jdk安装目录通过scp拷贝到其他两台主机

$ scp -r /usr/local/jdk1.7.0_79/ root@192.168.3.142:/usr/local/

修改jdk环境变量配置文件,同第一台

参考: 3.1.3 配置jdk环境变量

3.2 安装Hadoop

3.2.1 下载Hadoop

$ wget http://apache.fayea.com/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz

3.2.2 安装Hadoop

# 解压hadoop-2.6.0.tar.gz
$ tar -zxvf hadoop-2.6.0.tar.gz
# 拷贝解压后hadoop-2.6.0目录的文件移动到/usr/local/目录中,为了操作方便,将hadoop-2.6.0的目录名改为hadoop
$ sudo mv hadoop-2.6.0/ /usr/local/hadoop

3.2.3 配置Hadoop

进入/usr/local/hadoop/目录

$ cd /usr/local/hadoop/

创建tmp临时目录

$ mkdir tmp

1). 配置etc/hadoop/hadoop-env.sh文件,添加jdk安装位置到文件

$ vim etc/hadoop/hadoop-env.sh

# 添加如下代码到文件最后
export JAVA_HOME=/usr/local/jdk1.7.0_79

2). 配置vim etc/hadoop/core-site.xml文件

<configuration>
    <!-- 指定 hdfs 的 nameservice 为 namenodeservice -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://namenodeservice</value>
    </property>
    <!-- 指定 hadoop 临时目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>
    <!-- 指定 zookeeper 地址 -->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>gvm39:2181,gvm40:2181,gvm41:2181</value>
    </property>
</configuration>

3). 配置vim etc/hadoop/hdfs-site.xml文件

<configuration>
    <!--指定 hdfs 的 nameservice 为 namenodeservice,需要和 core-site.xml 中的保持一致 -->
    <property>
        <name>dfs.nameservices</name>
        <value>namenodeservice</value>
    </property>
    <!-- namenodeservice 下面有两个 NameNode,分别是 namenode1,namenode2 -->
    <property>
        <name>dfs.ha.namenodes.namenodeservice</name>
        <value>namenode1,namenode2</value>
    </property>
    <!-- namenode1 的 RPC 通信地址 -->
    <property>
        <name>dfs.namenode.rpc-address.namenodeservice.namenode1</name>
        <value>gvm39:9000</value>
    </property>
    <!-- namenode1 的 http 通信地址 -->
    <property>
        <name>dfs.namenode.http-address.namenodeservice.namenode1</name>
        <value>gvm39:50070</value>
    </property>
    <!-- namenode2 的 RPC 通信地址 -->
    <property>
        <name>dfs.namenode.rpc-address.namenodeservice.namenode2</name>
        <value>gvm40:9000</value>
    </property>
    <!-- namenode2 的 http 通信地址 -->
    <property>
        <name>dfs.namenode.http-address.namenodeservice.namenode2</name>
        <value>gvm40:50070</value>
    </property>
    <!-- 指定 NameNode 的元数据在 JournalNode 上的存放位置 -->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://gvm39:8485;gvm40:8485;gvm41:8485/namenodeservice</value>
    </property>
    <!-- 指定 JournalNode 在本地磁盘存放数据的位置 -->
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/usr/local/hadoop/journal</value>
    </property>
    <!-- 开启 NameNode 失败自动切换 -->
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <!-- 配置失败自动切换实现方式 -->
    <property>
        <name>dfs.client.failover.proxy.provider.namenodeservice</name>
                <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>
            sshfence
            shell(/bin/true)
        </value>
    </property>
    <!-- 使用 sshfence 隔离机制时需要 ssh 免登陆 -->
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>
    <!-- 配置 sshfence 隔离机制超时时间 -->
    <property>
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>30000</value>
    </property>
</configuration>

4). 配置vim etc/hadoop/mapred-site.xml文件

<configuration>
    <!-- 指定 mr 框架为 yarn 方式 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

5). 配置vim etc/hadoop/yarn-site.xml文件

<configuration>
    <!-- 指定 resourcemanager 地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>gvm41</value>
    </property>
    <!-- 指定 nodemanager 启动时加载 server 的方式为 shuffle server -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

6). 配置vim etc/hadoop/slaves文件

gvm39
gvm40
gvm41

将本主机的zookeeper安装目录通过scp拷贝到其他两台主机

$ scp -r /usr/local/hadoop/ root@192.168.3.142:/usr/local/
$ scp -r /usr/local/hadoop/ root@192.168.3.143:/usr/local/

在另外两台主机上修改zookeeper文件夹及其子目录的权限

$ sudo chown -R hadoop:hadoop /usr/local/hadoop/

3.3 安装zookeeper

3.3.1 下载zookeeper

$ wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

3.3.2 安装zookeeper

# 解压zookeeper-3.4.6.tar.gz
$ tar -zxvf zookeeper-3.4.6.tar.gz
# 拷贝解压后zookeeper-3.4.6目录的文件移动到/usr/local/hadoop/目录中,为了操作方便,将zookeeper-3.4.6的目录名改为zookeeper
$ sudo mv zookeeper-3.4.6 /usr/local/hadoop/zookeeper

3.2.3 配置zookeeper

创建zookeeper临时文件

$ mkdir /usr/local/hadoop/zookeeper/tmp

配置/usr/local/zookeeper/conf/zoo.cfg

dataDir=/usr/local/hadoop/zookeeper/tmp

server.1=192.168.3.141:2888:3888
server.2=192.168.3.142:2888:3888
server.3=192.168.3.143:2888:3888

在/usr/local/hadoop/zookeeper/tmp/目录中创建myid,并写入1,保存后退出

$ vim /usr/local/hadoop/zookeeper/tmp/myid

将本主机的zookeeper安装目录通过scp拷贝到其他两台主机

$ scp -r /usr/local/hadoop/zookeeper/ root@192.168.3.142:/usr/local/
$ scp -r /usr/local/hadoop/zookeeper/ root@192.168.3.143:/usr/local/

在另外两台主机上修改zookeeper文件夹及其子目录的权限

$ sudo chown -R hadoop:hadoop /usr/local/hadoop/zookeeper/

在gvm40上修改vim /usr/local/zookeeper/tmp/myid文件,将1改为2
在gvm41上修改vim /usr/local/zookeeper/tmp/myid文件,将1改为3

4. 启动

4.1 启动zookeeper集群

在每台主机上执行

$ /usr/local/hadoop/zookeeper/bin/zkServer.sh start

查看主机zookeeper角色

$ /usr/local/hadoop/zookeeper/bin/zkServer.sh status

通过jps命令查看守护进程

$ jps

4.2 启动 journalnode

$ /usr/local/hadoop/sbin/hadoop-daemons.sh start journalnode

通过jps命令查看每台机器的守护进程中是否有JournalNode进程

4.3 格式化 HDFS

$ /usr/local/hadoop/bin/hdfs namenode -format

格式化后会在根据 core-site.xml 中的 hadoop.tmp.dir 配置生成个文件,配置的是/usr/local/hadoop/tmp

将/usr/local/hadoop/tmp拷贝到其他两台机器

$ scp -r /usr/local/hadoop/tmp/ hadoop@192.168.3.142:/usr/local/hadoop/
$ scp -r /usr/local/hadoop/tmp/ hadoop@192.168.3.143:/usr/local/hadoop/

4.4 格式化 ZK

在gvm39 上执行格式化命令

$ /usr/local/hadoop/bin/hdfs zkfc -formatZK

4.5 启动HDFS

在gvm39上执行

$ /usr/local/hadoop/sbin/start-dfs.sh

4.6 启动yarn

在gvm41上执行

$ /usr/local/hadoop/sbin/start-yarn.sh
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值