Hadoop安装部署 双Namenote

环境

hdp21 192.168.95.21
hdp22 192.168.95.22
hdp23 192.168.95.23
hdp24 192.168.95.24
hdp25 192.168.95.25
时间网络同步、关闭selinux
创建用户hadoop,密码fujg
hadoop 用户免密登录
我准备把所有的文件都放在home目录下

Hadoop2.7.3

192.168.95.21  hdp21  主NameNode
192.168.95.22  hdp22  备用NameNode
192.168.95.23  hdp23  DataNode
192.168.95.24  hdp24  DataNode
192.168.95.25  hdp25  DataNode

1 准备

1,解压安装包到home目录
tar –zxvf hadoop-2.7.3.tar.gz –C /home/
2,修改home的权限
chmod 777 /home
3,创建目录
mkdir -pv /home/dfs/{data,name}
mkdir /home/tmp
mkdir -pv /home/hadoop-2.7.3/{journal,mapred_local,mapred_system,mr-history}
mkdir -pv /home/hadoop-2.7.3/mr-history/{done,tmp}

2 编辑配置文件
2.1 core-site.xml


<configuration>
    <property>
        <!-- hdfs访问端口,这里看hdfs-site.xml中配置的端口,双机 -->
        <name>fs.defaultFS</name>
        <value>hdfs://ns</value>
    </property>
    <property>
        <!-- 临时文件目录 -->
        <name>hadoop.tmp.dir</name>
        <value>/home/tmp</value>
    </property>
    <property>
        <!-- 缓存的大小,单位为byte,默认4k,线上设置为40k,这里设置4k -->
        <name>io.file.buffer.size</name>
        <value>4096</value>
    </property>
    <property>
        <!-- 指定zookeeper地址 -->
        <name>ha.zookeeper.quorum</name>
        <value>hdp21:2181,hdp22:2181,hdp23:2181,hdp24:2181,hdp25:2181</value>
    </property>
    <property>
        <!-- 用户代理机制 属组 -->
        <name>hadoop.proxyuser.hadoop.groups</name>
        <value>hadoop</value>
    </property>
    <property>
        <!-- 用户代理机制 hosts -->
        <name>hadoop.proxyuser.hadoop.hosts</name>
        <value>192.168.95.21</value>
    </property>
    <!-- snappy 文件压缩 -->
    <!--<property>
        <name>io.compression.codecs</name>
        <value>
            org.apache.hadoop.io.compress.GzipCodec,
            org.apache.hadoop.io.compress.DefaultCodec,
            org.apache.hadoop.io.compress.BZip2Codec,
            org.apache.hadoop.io.compress.SnappyCodec
        </value>
    </property>
    -->
</configuration>

2.2 hdfs-site.xml




<configuration>
    <property>
        <!-- 指定hdfs的nameservice为ns,要与core-site.xml中的名字一致 -->
        <name>dfs.nameservices</name>
        <value>ns</value>
    </property>
    <property>
        <!-- ns下面配置两个nameNode,nn1、nn2 -->
        <name>dfs.ha.namenodes.ns</name>
        <value>nn1,nn2</value>
    </property>
    <property>
        <!-- nn1的RPC通信地址 -->
        <name>dfs.namenode.rpc-address.ns.nn1</name>
        <value>hdp21:9000</value>
    </property>
    <property>
        <!-- nn1的HTTP通信地址 -->
        <name>dfs.namenode.http-address.ns.nn1</name>
        <value>hdp21:50070</value>
    </property>
    <property>
        <!-- nn2的RPC通信地址 -->
        <name>dfs.namenode.rpc-address.ns.nn2</name>
        <value>hdp22:9000</value>
    </property>
    <property>
        <!-- nn2的HTTP通信地址 -->
        <name>dfs.namenode.http-address.ns.nn2</name>
        <value>hdp22:50070</value>
    </property>
    <property>
        <!-- 指定NameNode的元数据 在JournalNode上的存放位置,使用以下3个节点存储 -->
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://hdp23:8485;hdp24:8485;hdp25:8485/ns</value>
    </property>
    <property>
        <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
        <name>dfs.journalnode.edits.dir</name>
        <value>/home/hadoop-2.7.3/journal</value>
    </property>
    <property>
        <!-- 开启NameNode故障时自动切换 -->
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <property>
        <!-- 失败自动切换实现方式 -->
        <name>dfs.client.failover.proxy.provider.ns</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
        <!-- 配置隔离机制,如果ssh是默认22端口,value直接写sshfence即可 -->
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    <property>
        <!-- 使用隔离机制时,需要ssh免密登录 -->
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/home/hadoop/.ssh/id_rsa</value>
    </property>
    <property>
        <!-- 元数据文件目录,默认为//${hadoop.tmp.dir}/dfs/name,这里的hadoop.tmp.dir是core-site.xml中配置的临时文件目录 -->
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/dfs/name</value>
    </property>
    <property>
        <!-- 数据目录 -->
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/dfs/data</value>
    </property>
    <property>
        <!-- 副本的冗余数量,正常应该是三个 -->
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <!-- 在nn和dn上开启webHDFS (REST API) 功能,不是必须 -->
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    
    <!-- 数据节点 追加 start -->
    <property>
        <!-- 是否开启数据节点追加,默认为true,当节点很少(即,节点宕掉了没有新的节点可提供)时,应该关闭 -->
        <name>dfs.client.block.write.replace-datanode-on-failure.enable</name>
        <value>true</value>
    </property>
    <property>
        <!-- 数据节点追加,当上一个设置为true时起作用 -->
        <name>dfs.client.block.write.replace-datanode-on-failure.policy</name>
        <value>NEVER</value>
    </property>
    <!-- 数据节点 追加 end -->
    
    <property>
        <!-- 权限检查开关,只有在有权限的环境中有用 -->
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
    <property>
        <!-- webserver使用的用户名,','分隔添加用户组 -->
        <name>dfs.web.ugi</name>
        <value>hadoop,hadoop</value>
    </property>
    <property>
        <!-- 超时时间,单位 毫秒 -->
        <name>dfs.socket.timeout</name>
        <value>240000</value>
    </property>
    <property>
        <!-- 指定用于在DataNode间传输block数据的最大线程数,默认4096 线上配置为40960 -->
        <name>dfs.datanode.max.transfer.threads</name>
        <value>4096</value>
    </property>
    <property>
        <!-- 打开文件数量上限,不能超过系统打开文件数设置 线上配置40960 -->
        <name>dfs.datanode.max.xcievers</name>
        <value>4096</value>
    </property>
    <property>
        <!-- datanode同时处理客户端请求线程数,默认为10 线上配置500 -->
        <name>dfs.datanode.handler.count</name>
        <value>50</value>
    </property>
    <property>
        <!-- namenode线程数,越大消耗内存越大 线上配置500 -->
        <name>dfs.namenode.handler.count</name>
        <value>50</value>
    </property>
    <!-- 动态增删节点,下面两项配置,运行hadoop dfsadmin -refreshNodes 即可使其生效 -->
    <property>
        <!-- 节点写在文件中 -->
        <name>dfs.hosts</name>
        <value>/home/hadoop-2.7.3/etc/hadoop/slaves</value>
    </property>
    <property>
        <!-- 要删除的节点写在文件中 -->
        <name>dfs.hosts.exclude</name>
        <value>/home/hadoop-2.7.3/etc/hadoop/exclude-slaves</value>
    </property>

</configuration>

2.3 mapred-site.xml




<configuration>
    
    <property>
        <!-- 指定map reduce运行在YARN上 -->
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <!-- mapreduce共享目录,MapReduce的控制文件 -->
        <name>mapred.system.dir</name>
        <value>/home/hadoop-2.7.3/mapred_system</value>
    </property>
    <property>
        <!-- MapReduce产生的中间数据存放目录,以,号隔开,hdfs会把数据存在这些目录下,一般这些目录是不同的块设备,不存在的目录会被忽略掉 -->
        <name>mapred.local.dir</name>
        <value>/home/hadoop-2.7.3/mapred_local</value>
    </property>
    <property>
        <!-- mapreduce历史作业服务:端口 -->
        <name>mapreduce.jobhistory.address</name>
        <value>hdp21:10020</value>
    </property>
    <property>
        <!-- mapreduce历史作业  web ui 服务:端口 -->
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hdp21:19888</value>
    </property>
    <property>
        <!-- mapreduce正在运行作业信息目录 -->
        <name>mapreduce.jobhistory.intermediate-done-dir</name>
        <value>/home/hadoop-2.7.3/mr-history/tmp</value>
    </property>
    <property>
        <!-- mapreduce已完成作业信息目录 -->
        <name>mapreduce.jobhistory.done-dir</name>
        <value>/home/hadoop-2.7.3/mr-history/done</value>
    </property>
    <!-- JVM参数 -->
    <property>
        <!-- 每个map或reduce使用的内存数量,线上512m -->
        <name>mapred.child.java.opts</name>
        <value>-Xmx200M</value>
    </property>
    <property>
        <!-- reduce使用的内存数量,线上512m -->
        <name>mapred.reduce.child.java.opts</name>
        <value>-Xmx200M</value>
    </property>
    <property>
        <!-- map使用的内存数量,线上512m -->
        <name>mapred.map.child.java.opts</name>
        <value>-Xmx200M</value>
    </property>

</configuration>

2.4 yarn-site.xml



<configuration>

<!-- Site specific YARN configuration properties -->
    <property>
        <!-- 辅助服务,扩展自己的功能 -->
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <!-- 开启RM高可用,ha高可用集群,这里是双机 -->
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <property>
        <!-- 自动故障切换 -->
        <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <property>
        <!-- 指定RM的名字 -->
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
    <property>
        <!--  -->
        <name>yarn.resourcemanager.zk-address</name>
        <value>hdp23:2181,hdp24:2181,hdp25:2181</value>
    </property>
    <property>
        <!-- 指定rm1的地址 -->
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>hdp21</value>
    </property>
    <property>
        <!-- 指定rm2的地址 -->
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>hdp22</value>
    </property>
    <property>
        <!-- 指定RM的cluster集群 id -->
        <name>yarn.resourcemanager.cluster-id</name>
        <value>yrc</value>
    </property>
    <property>
        <!-- 该节点上YARN可使用的物理内存总量,默认是8192(MB),YARN不会智能的探测节点的物理内存总量,线上是16372 -->
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>512</value>
    </property>

</configuration>

2.5 slaves

hdp23
hdp24
hdp25

2.6 修改hadoop-env.sh

vim /home/hadoop-2.7.3/etc/hadoop/hadoop-env.sh
把原来的export JAVA_HOME=${JAVA_HOME}
修改为export JAVA_HOME= /usr/local/jdk1.7.0_71
即真实的jdk安装路径

2.7 复制配置到其他节点

cd /home/
scp -r hadoop-2.7.3/ hdp22:/home/
scp -r hadoop-2.7.3/ hdp23:/home/
scp -r hadoop-2.7.3/ hdp24:/home/
scp -r hadoop-2.7.3/ hdp25:/home/

3 环境变量

su root
vim /etc/profile.d/hadoop.sh
export HADOOP_HOME=/home/hadoop-2.7.3
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
复制到其他节点:scp /etc/profile.d/hadoop.sh hdp22: /etc/profile.d/
执行使配置立即生效 . /etc/profile.d/hadoop.sh

4 为启动准备
4.1 zookeeper

启动zookeeper,zk-bat.sh start
Zookeeper已经安装完成 zk-bat.sh是我写的启动脚本

4.2 创建zk命名空间

在主NameNode节点上执行(创建命名空间):
hdfs zkfc -formatZK

4.3 JournalNode

在各个DataNode节点上执行(启动journalnode):
hadoop-daemon.sh start journalnode
使用jps查看服务是否启动

4.4 格式化hdfs

格式化namenode和journalnode目录
hdfs namenode -format ns

4.5 启动namenode

1,在主namenode节点启动namenode进程(hdp21,只在一个NameNode上执行即可)
hadoop-daemon.sh start namenode
2,复制主NameNode(在hdp22上,把备namenode节点的目录格式化并把元数据从主namenode节点copy过来,并且这个命令不会把journalnode目录再格式化了):
hdfs namenode –bootstrapStandby
3,启动备namenode进程(在hdp22上执行)
hadoop-daemon.sh start namenode
4,在两个NameNode上都执行:
hadoop-daemon.sh start zkfc

4.6 启动DataNode

在所有的DataNode上执行(启动datanode):
hadoop-daemon.sh start datanode

6 启停

启动
start-dfs.sh
停止
stop-dfs.sh

7 监控等

hdp21主NameNode

Hdfs浏览器访问地址:
http://hdp21:50070

hdp22备NameNode

Hdfs浏览器访问地址:
http://hdp22:50070

测试NameNode双机

杀掉主NameNode,即hdp21上的NameNode进程,浏览器查看hdp22的状态

1.在hdp21上jps,找到NameNode进程id并杀掉

图片 1.png

2.浏览器查看备NameNode状态

[图片上传中...(2.png-f1916-1516245036237-0)]

备用NameNode已经启动了!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容

  • 1. Zookeeper介绍: 1.基本介绍: Zookeeper: 为分布式应用提供分布式协作(协调)服务。使用...
    奉先阅读 4,561评论 0 10
  • hadoop2集群搭建详解------------------------天津九安医疗电子--吴伟 一、需要软件 ...
    hogface阅读 1,808评论 1 4
  • Spring的XML配置的bean配置属性 1.id: 作用:Bean的唯一标识名。它必须是合法的XML ID,在...
    GFHowe阅读 184评论 0 0
  • 天气真好。 这段路,我就陪你走到这里吧。 你要过得好。
    蓉树树阅读 116评论 0 0