赞
踩
●逻辑上分离
两个集群互相之间没有依赖、互不影响
●物理上在一起
某些角色进程往往部署在同一台物理服务器上
●MapReduce 集群呢?
MapReduce 是计算框架、代码层面的组件没有集群之说
根据软件工作特性和服务器硬件资源情况合理分配
比如依赖内存工作的 NameNode 是不是部署在大内存机器上
资源上有抢夺冲突的,尽量不要部署在一起
工作上需要互相配合的。尽量部署在一起
服务器 | 运行角色 |
nodel . itcast . cn | namenode datanode resourcemanager nodemanager |
node2.itcast.cn | secondarynamenode datanode nodemanager |
node3.itcast.cn | datanode nodemanager |
tar - zxvf hadoop -3.3.4.tar. gz - C /export/server
cd / export / server
ln- s /export /server/hadoop -3.3.4 hadoop
cd hadoop
配置 HDFS 集群,我们主要涉及到如下文件的修改:
workers : 配置从节点( DataNode )
hadoop-env.sh : 配置 Hadoop 的相关环境变量
core - site.xml : Hadoop 核心配置文件
hdfs - site.xml : HDFS 核心配置文件
这些文件均存在与$HADOOP _ HOME / etc / hadoop 文件夹中
- 在文件内部填入如下内容
- <configuration>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://node1:8020</value>
- </property>
-
- <property>
- <name>io.file.buffer.size</name>
- <value>131072</value>
- </property>
- </configuration>
- # 在文件内部填入如下内容
- <configuration>
- <property>
- <name>dfs.datanode.data.dir.perm</name>
- <value>700</value>
- </property>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>/data/nn</value>
- </property>
- <property>
- <name>dfs.namenode.hosts</name>
- <value>node1,node2,node3</value>
- </property>
- <property>
- <name>dfs.blocksize</name>
- <value>268435456</value>
- </property>
- <property>
- <name>dfs.namenode.handler.count</name>
- <value>100</value>
- </property>
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>/data/dn</value>
- </property>
- </configuration>
- 在node1节点:
- mkdir -p /data/nn
- mkdir /data/dn
- #在node2和node3节点:
- mkdir -p /data/dn
目前,已经基本完成Hadoop的配置操作,可以从node1将hadoop安装文件夹远程复制到node2、node3。
分发:在node1执行如下命令
- cd /export/server
- scp -r hadoop-3.3.4 node2:`pwd`/
- scp -r hadoop-3.3.4 node3:`pwd`/
在node2执行,为hadoop配置软链接:
- # 在node2执行如下命令
- ln -s /export/server/hadoop-3.3.4 hadoop
在node3执行,为hadoop配置软链接:
- # 在node3执行如下命令
- ln -s /export/server/hadoop-3.3.4 hadoop
为了方便我们操作Hadoop,可以将Hadoop的一些脚本、程序配置到PATH中,方便后续使用
在Hadoop文件夹中的bin、sbin两个文件夹内有许多的脚本和程序,现在来配置一下环境变量
1. vim /etc/profile
- # 在/etc/profile文件底部追加如下内容
- export HADOOP_HOME=/export/server/hadoop
- export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
2. 在node2和node3配置同样的环境变量
hadoop部署的准备工作基本完成
为了确保安全,hadoop系统不以root用户启动,我们以普通用户hadoop来启动整个Hadoop服务 所以,现在需要对文件权限进行授权。
ps:请确保已经提前创建好了hadoop用户(前置准备章节中有讲述),并配置好了hadoop用户之间的免密登录
以root身份,在node1、node2、node3三台服务器上均执行如下命令
- # 以root身份,在三台服务器上均执行
- chown -R hadoop:hadoop /data
- chown -R hadoop:hadoop /export
- # 确保以hadoop用户执行
- su - hadoop
- # 格式化namenode
- hadoop namenode -forma
- # 一键启动hdfs集群
- start-dfs.sh
- # 一键关闭hdfs集群
- stop-dfs.sh
-
- # 如果遇到命令未找到的错误,表明环境变量未配置好,可以以绝对路径执行
- /export/server/hadoop/sbin/start-dfs.sh
- /export/server/hadoop/sbin/stop-dfs.sh
启动完成后,可以在浏览器打开: http://node1:9870,即可查看到hdfs文件系统的管理网页。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。