hadoo分布式安装

前骤:

Hadoop Cluster中的Daemon

HDFS:

NameNode,NN

SecondaryNode,SNN

DataNode:DN

/data/hadoop/hdfs/{nn,snn,dn}

nn:fsimage,editlog//镜像和编辑日志

//hdfs的NN是在内存中存放数据,不断根据文件状态改变,修改元数据

fsimage存放了:文件分割后存放在哪些node上

//文件元数据的改变,会写入到editllog中,最后写入到fsimage中,因此下次NN重启后数据依然存在,从fsimage中读取数据,获取到内存中

//一旦nn崩溃,数据恢复需要大量的时间

snn:在nn崩溃的时候,及时顶上去,省去修复nn,让nn重新上线的时间,但是各个data node报告数据状态,进行修复的时间依然需要。

正常情况下:snn负责copy nn的fsimage和editlog然后在snn上合并

checkpoint:因为nn是在不断变化的,因此snn要指定合并到那个时间点上。

//官方建议30个以上的node构建hadoop集群

data是否需要工作于raid//因为hdfs已经有replicate的功能,因此再次提供冗余的必要性不大

hadoop-daemon.sh 运行进程

在集群模式中hadoop-daemon.sh start DataNode时,需要自动的找每一个DataNode节点,然后在每一个DataNode上自动启动。

如何找到,或者如何保证命令能够通过主控节点,自动连接到各从节点,并且有权限执行命令。

在主节点上:配置

YARN:

ResourceManager

NodeManager:

yarn-daemon.sh start/stop

实际运行进程:

【NN】 【SNN】 【RM】

|    |   |

---------------------------------

[node1/NN] [nod2/NN] [node3/NN]

在node上启动:datanode进程和nodemanager进程即可

实验模型:

【NN/SNN/RM】

|

-----------------------------------------

[node1/NN] [nod2/NN] [node3/NN]

主控节点上运行:namenode,secondarynamenode,resourcemanager三个进程

其他node上启动:datanode进程和nodemanager进程

预备:

1.ntpdate 同步

tzselect,

timedatactl //查看时区设置

timedatectl list-timezones # 列出所有时区

timedatectl set-local-rtc 1 # 将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间

timedatectl set-timezone Asia/Shanghai # 设置系统时区为上海

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime //最简单的方案

2.hosts通信

172.16.100.67 node1.mt.com node1 master

172.16.100.68 node2.mt.com node2

172.16.100.69 node3.mt.com node3

172.16.100.70 node4.mt.com node4

如果需要通过master节点启动或停止整个集群,需要在master上配置运行服务的用户,如hdfs和yarn能够基于密钥ssh链接

node1:

一、前奏

(1)配置环境

vim /etc/profile.d/java.sh

JAVA_HOME=/usr

yum install java-1.8.0-openjdk-devel.x86_64

scp /etc/profile.d/java.sh node2:/etc/profile.d/

scp /etc/profile.d/java.sh node3:/etc/profile.d/

scp /etc/profile.d/java.sh node4:/etc/profile.d/

vim /etc/profile.d/hadoop.sh

export HADOOP_PREFIX=/bdapps/hadoop

export PATH=$PATH:${HADOOP_PREFIX}/bin:${HADOOP_PREFIX}/sbin

export HADOOP_YARN_HOME=${HADOOP_PREFIX}

export HADOOP_MAPPERD_HOME=${HADOOP_PREFIX}

export HADOOP_COMMON_HOME=${HADOOP_PREFIX}

export HADOOP_HDFS_HOME=${HADOOP_PREFIX}

. /etc/profile.d/hadoop.sh

scp  /etc/profile.d/hadoop.sh node2:/etc/profile.d/

scp  /etc/profile.d/hadoop.sh node3:/etc/profile.d/

scp  /etc/profile.d/hadoop.sh node4:/etc/profile.d/

(2)修改hosts文件

vim /etc/hosts

172.16.100.67 node1.mt.com node1 master

172.16.100.68 node2.mt.com node2

172.16.100.69 node3.mt.com node3

172.16.100.70 node4.mt.com node4

scp 到 node2,node3,node4

(3)hadoop 密钥登录

useradd hadoop //node2,3,4都有一个hadoop用户

echo "hadoop" | passwd --stdin hadoop

useradd -g hadoop hadoop //这里都使用一个用户,也可以分别创建yarn和hdfs用户

su - hadoop

ssh-keygen

for i in 2 3 4; do  ssh-copy-id -i .ssh/id_rsa.pub [email protected]${i}; done

验证:

ssh node2 ‘date‘

ssh node3 ‘date‘

ssh node4 ‘date‘

二、安装部署hadoop

(1)解压

mkdir -pv /bdapps/ /data/hadoop/hdfs/{nn,snn,dn}  //这里的dn是用不到的,因为主控节点是不存储数据的,可以不创建

chown -R hadoop:hadoop /data/hadoop/hdfs

tar xvf hadoop-2.6.2.tar.gz -C /bdapps/

cd /bdapps/

ln -sv hadoop-2.6.2 hadoop

cd hadoop

mkdir logs

chown g+w logs

chown -R hadoop:hadoop ./*

(2)配置文件修改

1.core-site.xml 配置

vim etc/hadoop/core-site.xml

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://master:8020</value>

//hdfs的访问接口,master如果不能解析,用ip地址也可以

<final>true</final>

</property>

</configuration>

//core指向NN

2.yanr-site.xml文件配置

vim etc/hadoop/yarn-site.xml

<configuration>

<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.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.scheduler.class</name>

<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>

</property>

</configuration>

//%s/localhost/master/g //替换localhost为master

//指向ResourceManager

3.hdfs-site.xml配置

vim etc/hadoop/hdfs-site.xml

<configuration>

<property>

<name>dfs.replication</name>  //dfs的副本数量

<value>2</value>

</property>

<proporty>

<name>dfs.namenode.name.dir</name>

<value>file:///data/hadoop/hdfs/nn</value>

</property>

<proporty>

<name>dfs.datanode.data.dir</name>

<value>file:///data/hadoop/hdfs/dn</value>

</property>

<property>

<name>fs.checkpoint.dir</name>

<value>file:///data/hadoop/hdfs/snn</value>

</property>

<property>

<name>fs.checkpoint.edits.dir</name>

<value>file:///data/hadoop/hdfs/snn</value>

</property>

</configuration>

4.

mapred-site.xml 是唯一不需要修改的

默认的就是yarn就可以

5.

vim slaves

node2

node3

node4

//slaves是datanode和nodemanager

(3)

在node2,node3,node4指定到该步骤后:chown -R hadoop:hadoop ./*

su - hadoop

scp /bdapps/hadoop/etc/hadoop/* node2:/bdapps/hadoop/etc/hadoop/

scp /bdapps/hadoop/etc/hadoop/* node3:/bdapps/hadoop/etc/hadoop/

scp /bdapps/hadoop/etc/hadoop/* node4:/bdapps/hadoop/etc/hadoop/

三.格式化然后启动

su - hadoop

hdfs namenode -format

显示/data/hadoop/hdfs/nn hash been successful formatted  表示成功

启动hadoop方式有两种:

1.在各节点上分别启动要启动的服务

启动yarn服务要使用yarn用户身份

master节点:NameNode服务和ResourceManager服务

su - hdfs -c ‘hadoop-daemon.sh start namenode‘

su - hdfs -c ‘yarn-daemon.sh start resourcemanager‘

slave节点:DataNode服务和NodeManager服务

su - hdfs -c ‘hadoop-daemon.sh start datanode‘

su - hdfs -c ‘yarn-daemon.sh start nodemanager‘

2.在master上启动整个集群

su - hdfs -c ‘start-dfs.sh‘

su - hdfs -c ‘start-yarn.sh‘

老版本通过start-all.sh和stop-all.sh来控制hdfs和mapreduce

启动服务:

su - hdfs -c ‘start-dfs.sh‘

su - hdfs -c ‘stop-dfs.sh‘ //关闭hdfs

会提示在,2,3,4节点上启动

su - hdfs -c ‘start-yarn.sh‘

master启动resourcemanager

slave上启动nodemanager

测试:

node3: su - hadoop

jps //查看DataNode进程和NodeManager进程

node1:su - hadoop

jps //启动的有secondaryNameNode和NameNode进程

hdfs dfs -mkdir /test

hdfs dfs -put /etc/fstab /test/fstab

hdfs dfs -ls -R /test

hdfs dfs -cat /test/fstab

node3:

ls /data/hadoop/hdfs/dn/current/..../blk,...  存储在这里

注意:node2,3,4中有一个是没有存储该文件的,因为定义的slaves 为2个

vim etc/hadoop/hdfs-site.xml

<name>dfs.replication</name>  //dfs的副本数量

<value>2</value>

Web接口查看:

172.16.100.67:8088

内存显示为24G,因为3G,每个node的物理内存代大小为8G

172.16.100.67:50070

datanode: 有三个

单个文件太小的是不会被切割的,大于64M的文件会被切片

可以直接上传压缩文件,会被切块

运行任务测试:

yarn jar /bdapps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-example-2.6.jar wordcount /test/fstab /test/functions /test/wc

hdfs dfs cat /test/wc/part-r-0000

四、其他节点

node2:

user hadoop

echo "hadoop" | passwd --stdin hadoop

mkdir -pv /bdapps  /data/hadoop/hdfs/{nn,snn,dn} //只有dn有用

chown -R hadoop:hadoop /data/hadoop/hdfs/

tar xvf hadoop-2.6.2.tar.gz -C /bdapps/

cd /bdapps/

ln -sv hadoop-2.6.2 hadoop

cd hadoop

mkdir logs

chown g+w logs

chown -R hadoop:hadoop ./*

//可以在修改配置文件后,直接复制到node3和node4上因为配置都一样

node3:

user hadoop

echo "hadoop" | passwd --stdin hadoop

mkdir -pv /bdapps  /data/hadoop/hdfs/{nn,snn,dn} //只有dn有用

chown -R hadoop:hadoop /data/hadoop/hdfs/

tar xvf hadoop-2.6.2.tar.gz -C /bdapps/

cd /bdapps/

ln -sv hadoop-2.6.2 hadoop

cd hadoop

mkdir logs

chown g+w logs

chown -R hadoop:hadoop ./*

node4:

user hadoop

echo "hadoop" | passwd --stdin hadoop

mkdir -pv /bdapps  /data/hadoop/hdfs/{nn,snn,dn} //只有dn有用

chown -R hadoop:hadoop /data/hadoop/hdfs/

tar xvf hadoop-2.6.2.tar.gz -C /bdapps/

cd /bdapps/

ln -sv hadoop-2.6.2 hadoop

cd hadoop

mkdir logs

chown g+w logs

chown -R hadoop:hadoop ./*

=====================================================

yarn的集群管理命令

yarn [--config confdir] COMMAND

resourcemanager-format-state-store //删除RMStateStore

resourcemanager //运行ResourceManager

nodemanaer //运行nodemanager on each slave

timelineserver //运行timelineserver,任务编排,时间线

rmadmin //resourcemanager管理

version

jar //运行jar文件

application //显示application信息

report/kill application

applicationattempt //尝试运行相关报告

container //容器相关信息

node //显示node

queue //报告队列信息

logs //备份容器日志

classpath //显示java运行程序时的类加载路径

daemonlog //获取守护进程的日志级别

jar,application,node,logs,classpath,version 是常用的用户命令

resourcemanager,nodemanager,proxyserver,rmadmin,daemon是常用的管理类命令

yarn application [options]

-status ApplicationID 状态信息

yarn application -status  application_1494685700454_0001

-list 列出yarn上的application列表

-appTypes:MAPREDUCE,YARN

-appStates:ALL,NEW,NEW_SAVING,SUBMITTED,ACCEPTED,RUNNING,FINISHED,FAILED,KILLED

yarn application -appStates=all

-kill ApplicationID

yarn node

-list //例出node列表

-states: NEW,RUNNING,UNHEALTHY不健康,DECOMMISSION退役的,LOST,REBOOTED

-staus Node-ID //显示节点信息

logs:显示已经完成的YARN程序的日志(及状态为:FAILED,KILLED,FINISHED)

如果需要在命令行查看日志需要配置yarn-site.xml

yarn.log-aggregation-enable 属性值为true

yarn logs -applicationId [applicationID] [options]

-applicationId applicationID必备选项,用于从ResourceManager获取其详细信息。

-appOwner APPOwner默认为当前用户,可选

-nodeAddress NodeAddress -containerId containerID:获取当前指定节点上指定容器的相关信息;其中NodeAddress的格式同NodeId

classpath:

yarn calasspath //加载java程序路径

管理命令:

rmadmin

nodemanager

timelineserver

rmadmin是ResourceManager的客户端程序,可用于刷新访问控制策略、调度器队列及注册到RM上的节点等。

刷新之后,无需重启即可生效。

yarn rmadmin [options]

-help

-refreshQueues:重载队列的acl,状态及调用器队列;它会根据配置文件中的配置信息重新初始化调度器

-refreshNodes:为RM刷新主机信息,它通过读取RM节点的include和exclude文件来更新集群需要包含或排除的节点列表。

-refreshUserToGroupMappings:根据配置的Hadoop安全组映射,通过刷新组缓存中的信息来更新用户和组之间的映射关系。

-refreshSuperUserGroupsConfiguration:刷新超级用户代理组映射,以及更新代理主机和core-site.xml配置文件中的hadoop.proxyuser属性定义的代理组

-refreshAdminAcls:根据yarn站点配置文件或默认配置文件的yarn.admin.acl属性刷新RM的管理ACL;

-refreshServiceAcl:重载服务级别授权策略文件,而后RM将重载授权策略文件;它会检查hadoop安全授权是否启用并为IPC Server,ApplicationMaster,Client及Resource tracker刷新ACL;

DaemonLog:查看或更细

http://host:port/logLevel?log=name service?

yarn daemonlog [options] args

-getLevel  host:port name:显示指定守护进程的日志级别

-getLevel  host:port level:设置守护进程的日志级别

运行YARN application

yarn application可以是一个shell脚本,MapReduce作业或者其他类型的任意作业。

步骤:

1.Application初始化提交 //client端完成

2.分配内存并启动AM //RM完成

3.AM注册及资源分配 //AM在nodemanager上完成

4.启动并监控容器 //AM向NM报告,NM报告RM完成

5.Application进度报告 //AM完成

6.Application进度完成 //

利用ambari部署hadoop集群

https://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari/

https://cwiki.apache.org/confluence/display/AMBARI/Installation+Guide+for+Ambari+2.5.0

IBM官方技术论坛:https://www.ibm.com/developerworks/cn/opensource/

Ambari 2.2.2 下载资源

OS Format URL

http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.2.2.0

http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.2.2.0/ambari.repo

http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.2.2.0/ambari-2.2.2.0-centos7.tar.gz

HDP 2.4.2 下载资源

http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.4.2.0

http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.4.2.0/hdp.repo

http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.4.2.0/HDP-2.4.2.0-centos7-rpm.tar.gz

http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos7

http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos7/HDP-UTILS-1.1.0.20-centos7.tar.gz

时间: 2024-09-29 16:17:24

hadoo分布式安装的相关文章

Hadoop2.4.1完全分布式安装

在虚拟机利用两台centos(64位),由于使用的机器是64位,所以要自己编译好安装包 1.建Hadoop运行组和用户 root下运行命令,创建组和用户 groupadd hadoop useradd -g hadoop hadoop passwd hadoop 2.修改/etc/hosts 192.168.137.129 master#作为主节点 192.168.137.128 slave1#作为从节点 3.设置ssh免密码连接 hadoo用户下运行命令,生成公钥和私钥 ssh-keygen

hadoop完全分布式安装

1.安装环境是vmware workstation10.0模拟出三个虚拟节点,每一个节点安装Ubuntu12.04 LTS操作系统,主机名分别是hadoop1.hadoop2以及hadoop3.同时在每一个节点安装好java.安装方法同之前介绍的伪分布式安装方法一样. 2.接着是对三个节点的hosts文件进行配置,先用ifconfig命令查看三个节点的ip地址,然后用sudo vim /etc/hosts命令打开hosts文件,统一编辑如下: 3.配置完hosts文件之后,设置ssh无密码互联.

Hbase伪分布式安装

前面的文章已经讲过hadoop伪分布式安装,这里直接介绍hbase伪分布式安装. 1. 下载hbase 版本hbase 1.2.6 2. 解压hbase 3. 修改hbase-env.sh 新增如下内容 export JAVA_HOME=/home/cauchy/software/jdk export HADOOP_HOME=/home/cauchy/software/hadoop export HBASE_HOME=/home/cauchy/software/hbase export HBAS

Zookeeper 初体验之——伪分布式安装(转)

原文地址: http://blog.csdn.net/salonzhou/article/details/47401069 简介 Apache Zookeeper 是由 Apache Hadoop 的 Zookeeper 子项目发展而来,现在已经成为了 Apache 的顶级项目.Zookeeper 为分布式系统提供了高效可靠且易于使用的协同服务,它可以为分布式应用提供相当多的服务,诸如统一命名服务,配置管理,状态同步和组服务等.Zookeeper 接口简单,开发人员不必过多地纠结在分布式系统编程

二、Hadoop-2.6的完全分布式安装模式

一.Hadoop的3中运行模式 1.1.单机模式.安装简单,几乎不用作任何配置,但仅限于调试用途: 1.2.伪分布式模式.在单节点上同时启动namenode.secondary namenode.datanode.JobTracker.TaskTracker 5个进程,模拟分布式运行的各个节点. 1.3.完全分布式模式.正常的Hadoop集群,由多个节点构成. 二.Hadoop-2.6的完全分布式安装模式 2.0.准备文件 (1)Jdk1.7(或其他版本):jdk-7u79-linux-x64.

HBase基础和伪分布式安装配置

一.HBase(NoSQL)的数据模型 1.1 表(table),是存储管理数据的. 1.2 行键(row key),类似于MySQL中的主键,行键是HBase表天然自带的,创建表时不需要指定 1.3 列族(column family),列的集合. 一张表中有多个行健,一个行健读取出来的是一条记录,列族和MySQL中的列差不多,但是它是列的集合 HBase中列族是需要在定义表时指定的,列是在插入记录时动态增加的. HBase表中的数据存储在本地磁盘上的时候,每个列族单独一个作为文件存储. 上图表

Hadoop2.2.0多节点分布式安装及测试

众所周知,hadoop在10月底release了最新版2.2.很多国内的技术同仁都马上在网络上推出了自己对新版hadoop的配置心得.这其中主要分为两类: 1.单节点配置 这个太简单了,简单到只要懂点英语,照着网上说的做就ok了.我这里不谈这个,有兴趣的童鞋可以自己去问度娘和谷哥- 2.多节点配置 这个就是我要重点说明的,老实说网络上说的的确是多节点,但不是真正的分布式部署- 我们为什么要用hadoop?因为hadoop是一个分布式系统基础架构,我们可以在不了解分布式底层细节的情况下,开发分布式

openstack分布式安装

一. keystone安装笔记 初次接触openstack,在尝试过单机部署以后不是很满意,就开始着手分布式部署,主要是按照openstack官网上的安装教程来的,本人安装的是目前最新的 I 版. 以下是我的环境,5台主机kk1,kk2,kk3,kk4,kk5. 接下来是我安装的部分服务的笔记,主要在安装过程中也就是开始有点问题,接下来碰到的问题也就差不多了, 所以就懒得记录了. 最麻烦的要数网络了, 我选择的是最简单的方式nova-network方式,这里没有记录. kk1: nova,key

Hadoop2.4.1分布式安装

1.做好下文中的所有配置:Hadoop1.2.1分布式安装-1-准备篇. 2.Hadoop2.x的发行版中有个小问题:libhadoop.so.1.0.0在64位OS中存在问题,因为它是32位的,在64位OS中hadoop启动时会报一个WARN的日志.这个包的作用是调用native的api,可以提高hadoop的性能,如果这个包失效,那就是使用jvm做压缩等工作,效率就会很低.处理方法就是重新编译Hadoop,见xxx(link  article). 3.在打算做namenode的机器上,wge