Hadoop集群搭建

准备工作

4台linux服务器(ubuntu),主机名分别为:master,namesecond,slavenode01.slavenode02

关闭linux防火墙

sudo ufw disable 
查看防火墙状态
sudo ufw status 

jdk(Oracle)
zookeeper安装包
hadoop安装包

windows 域名映射
进入C:\Windows\System32\drivers\etc文件夹,用记事本打开hosts文件,追加以下内容(写自己的IP地址):

127.0.0.1 localhost
192.168.223.128 master
192.168.223.140 slavenode01
192.168.223.139 slavenode02
192.168.223.141 namesecond

伪分布式 (single node setup)


1.安装jdk、配置环境变量,测试

2.免秘钥

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

3.hadoop包安装并配置环变:hadoop-2.6.5.tar.gz

4.Hadoop的第二次JAVA_HOME 环境变量配置
vi hadoop-env.sh
vi mapred-env.sh
vi yarn-env.sh

5.配置core-site.xml
vi core-site.xml

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/var/hadoop/local</value>
</property>

7.配置hdfs-site.xml

<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:50090</value>
</property>

8.配置slaves文件

master

9.格式化hdfs

hdfs namenode -format  (只能格式化一次,再次启动集群不要执行)

10.启动集群

start-dfs.sh

角色进程查看:jps
帮助: hdfs
hdfs dfs
查看web UI: IP:50070
创建目录:hdfs dfs -mkdir -p /user/root
查看目录: hdfs dfs -ls /
上传文件: hdfs dfs -put hadoop-2.6.5.tar.gz /user/root
停止集群:stop-dfs.sh

安装zookeeper集群:

1.3节点 java 安装

2.所有集群节点创建目录: mkdir opt/zookeeper

3.zk压缩包解压在其他路径下::
# tar xf zookeeper-3.4.6.tar.gz -C /opt/zookeeper/

4.进入conf目录,拷贝zoo_sample.cfg zoo.cfg 并配置
dataDir,集群节点。

5.单节点配置环境变量、并分发 ZOOKEEPER_PREFIX,共享模式读取profile

6 共享创建 /var/sxt/zk目录,进入各自目录 分别输出1,2,3 至文件 myid
echo 1 > /var/zookeeper/zk/myid

7 共享启动zkServer.sh start 集群

8.启动客户端 help命令查看

全分布安装


节点: master/namesecond/slavenode01/slavenode02

节点状态:
master: 伪分布
namesecond/slavenode01/slavenode02 : ip配置完成
建立各节点通讯(hosts)

全分布分配方案:

-NNSNNDN
master*
namesecond**
slavenode01*
slavenode02*

前期准备:
zookeeper

1 修改/etc/hostname

yourShelfHostname

2.修改/etc/hosts追加一下内容

192.168.223.128 master
192.168.223.140 slavenode01
192.168.223.139 slavenode02
192.168.223.141 namesecond

3 设置时间同步:date -s “xxxx-x-xx xx:xx:xx”

4 秘钥分发:
在每个节点上登录一下自己:产生.ssh目录
从master/namesecond/slavenode01/slavenode02分发公钥 (公钥的名称要变化)
scp id_dsa.pub nodeName:pwd/master.pub

各节点把master的公钥追加到认证文件里:
cat ~/master.pub >> ~/.ssh/authorized_keys

5 namesecond/slavenode01/slavenode02安装jdk环境,master分发profile给其他节点,并重读配置文件

. /etc/profile

6 进入hadoop-2.6.5/etc目录
copy master下的 hadoop 为 hadoop-local (保存伪分布式配置文件,因为管理脚本只会读取hadoop目录)

[root@master etc]# cp -r hadoop   hadoop-local

7 配置core-site.xml
(待更新)
8 配置hdfs-site.xml
(待更新)

9 配置slaves

namesecond
slavenode01
slavenode02

10 分发
分发hadoop配置文件到其他namesecond,slavenode01,slavenode02节点

11 格式化集群:hdfs namenode -format

12 启动集群start-dfs.sh

查看各节点进程启动情况
Jps

HA

-NN1NN2DNZKZKFCJNN
master***
namesecond*****
slavenode01***
slavenode02**

1 两个nn节点免秘钥
ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys


2 进入hadoop-2.6.5/etc目录 (可以通过变量:cd $HADOOP_HOME)
拷贝hadoop 为 hadoop-full (保存全分布式配置文件)

3 hdfs.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>
    </property>
    <property>
        <name>dfs.ha.namenodes.mycluster</name>
        <value>nn1,nn2</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>
        <value>master:8020</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
        <value>namesecond:8020</value>
    </property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>master:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>namesecond:50070</value>
</property>
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://master:8485;namesecond:8485;slavenode01:8485/mycluster</value>
</property>
<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property>

<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_rsa</value>
</property>
<property>
 <name>dfs.journalnode.edits.dir</name>
 <value>/var/hadoop/ha/journalnode</value>
</property>
<property>
 <name>dfs.ha.automatic-failover.enabled</name>
 <value>true</value>
</property>

</configuration>

4 core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://mycluster</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/hadoop/ha</value>
    </property>
    <property>
         <name>ha.zookeeper.quorum</name>
         <value>namesecond:2181,slavenode01:2181,slavenode02:2181</value>
    </property>
</configuration>

5 配置slaves

namesecond
slavenode01
slavenode02

6 分发 hdfs.xml 和core.xml 给其他节点
scp -r dirPath hostname:pwd

启动HA高可用集群

1.在namesecond、datanode01、datanode02中启动zookeeper
zkServer.sh start

2.在namenode、namesecond、datanode01中启动journalnode
hadoop-daemon.sh start journalnode

3.初始化namenode
hdfs namenode -format

4.启动namenode
hadoop-daemon.sh start namenode

5.同步namesecond数据
hdfs namenode -bootstrapStandby

6.在namenode中初始化zkfc
hdfs zkfc -formatZK

在zookeeper 客户端可见:
[zk: localhost:2181(CONNECTED) 1] ls /
[hadoop-ha, zookeeper]
[zk: localhost:2181(CONNECTED) 2] ls /hadoop-ha
[mycluster]

7.启动hadoop集群
start-dfs.sh

cat /var/hadoop/ha/dfs/name/current/VERSION

再次查看zk客户端,可见:
[zk: localhost:2181(CONNECTED) 9] ls /hadoop-ha/mycluster
[ActiveBreadCrumb, ActiveStandbyElectorLock]
或者两个目录的数据,谁是主谁被创建:
[zk: localhost:2181(CONNECTED) 11] get /hadoop-ha/mycluster/ActiveBreadCrumb

mr-hd2.x yarn

在高可用HA的基础上加入yarn
在这里插入图片描述

两个rm节点互免秘钥:

slavenode01节点 .ssh 目录下: ssh-keygen -t dsa -P ‘’ -f ./id_dsa
cat ~id_dsa.pub >> authorized_keys
scp id_dsa.pub root@slavenode02:pwd/node08.pub

slavenode02节点 .ssh 目录下 :
cat slavenode01.pub >> authorized_keys
ssh-keygen -t dsa -P ‘’ -f ./id_dsa
cat ~id_dsa.pub >> authorized_keys
scp id_dsa.pub root@slavenode01:pwd/slavenode02.pub

slavenode01节点 .ssh 目录下:
cat slavenode02.pub >> authorized_keys

cd $HADOOP_HOME/etc/hadoop

mv mapred-site.xml.template mapred-site.xml  

mapred-site.xml

<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>

yarn-site.xml:

<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
<property>
   <name>yarn.resourcemanager.ha.enabled</name>
   <value>true</value>
 </property>
 <property>
   <name>yarn.resourcemanager.cluster-id</name>
   <value>cluster1</value>
 </property>
 <property>
   <name>yarn.resourcemanager.ha.rm-ids</name>
   <value>rm1,rm2</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm1</name>
   <value>slavenode01</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm2</name>
   <value>slavenode02</value>
 </property>
 <property>
   <name>yarn.resourcemanager.zk-address</name>
   <value>namesecond:2181,slavenode01:2181,slavenode02:2181</value>
 </property>

分发两个文件到:namesecond,slavenode01,slavenode02节点
scp maprexxxx yarn-xxx namesecond:pwd
scp maprexxxx yarn-xxx slavenode01:pwd
scp maprexxxx yarn-xxx slavenode02:pwd

启动:master:

1 zookeeper
2 hdfs (注意,有一个脚本不要用,start-all)start-dfs.sh
如果nn 和 nn2没有启动,需要在master,namesecond分别手动启动:
hadoop-daemon.sh start namenode
3 start-yarn.sh (启动nodemanager)
4 在slavenode01,slavenode02节点分别执行脚本: yarn-daemon.sh start resourcemanager

UI访问: ip:8088

停止:
master: stop-dfs.sh
master: stop-yarn.sh (停止nodemanager)
namesecond,slavenode01: yarn-daemon.sh stop resourcemanager (停止resourcemanager)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值