Hadoop分布式系统的安装部署

1、关于虚拟机的复制

新建一台虚拟机,系统为CentOS7,再克隆两台,组成一个三台机器的小集群。正常情况下一般需要五台机器(一个Name节点,一个SecondName节点,三个Data节点。)

 此外,为了使网络生效,需要注意以下几点:

1>  编辑网络配置文件 

/etc/sysconfig/network-scripts/ifcfg-eno16777736

先前的版本需要删除mac地址行,注意不是uuid,而是hwaddr这一点新的CentOS不再需要

2> 删除网卡和mac地址绑定文件  

rm -rf /etc/udev/rules.d/70-persistent-net.rules

3> 重启动系统

此外,mapreduce在运行的时候可能会随机开放端口,在CentOS7中,可以使用下面的命令将防火墙关闭

systemctl stop firewalld

或者使用下面的命令,使在集群中的机器可以不受限制的互相访问

#把一个源地址加入白名单,以便允许来自这个源地址的所有连接
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.1.215" accept' --permanent firewall-cmd --reload

 

2、IP地址设置为静态

准备了三个IP地址

192.168.1.215

192.168.1.218

192.168.1.219

 CentOS7下,修改ip地址的文件为/etc/sysconfig/network-scripts/ifcfg-eno16777736

主要作如下设置,其他的不需要变

# none或static表示静态
OOTPROTO=static
# 是否随网络服务启动
ONBOOT=yes
IPADDR=192.168.1.215
# 子网掩码
NETMASK=255.255.255.0
# 网关,设置自己的
GATEWAY=192.168.0.1
# dns
DNS1=202.106.0.20

3、修改hostname与hosts文件

这两个文件均处于系统根目录的etc文件夹之中

下图显示了映射后的机器名称以及对应的ip地址(#localhost.localdomain这一行多余,仅master刚刚好)

主节点master,两个数据节点data1data2

 

4、添加用户与组

需要为Hadoop软件系统设置单独的用户和组,本例中新添加的用户和所属组的名称均为hadoop  

adduser hadoop
passwd hadoop 

 5、利用ssh实现免密码登录

注意,目的是使Hadoop系统的所属用户在集群之间实现免密码登录,而不是root用户(除非Hadoop系统的所有者root,但一般不建议这么做)。这一点非常重要。

在本例中,软件所有者是上面新建的hadoop用户,密钥也要由hadoop用户来生成。

1> 更改配置文件

需要对sshd_config文件进行修改,主要是以下三项,取消注释即可 

vim /etc/ssh/sshd_config

 

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

之后,执行以下命令重启sshd服务

service sshd restart

2> 生成密钥并分发相关文件

简单的方法,密钥生成后,使用直接使用 ssh-copy-id 命令把密钥追加到远程主机的 .ssh/authorized_key 上,如下:

# 生成密钥
ssh-keygen -t rsa
# 密钥追加到远程主机
ssh-copy-id -i ~/.ssh/id_rsa.pub  hadoop@192.168.1.218
ssh-copy-id -i ~/.ssh/id_rsa.pub  hadoop@data2

复杂的方法,不再推荐,具体实现步骤如下:

a> 将三台计算机(masterdata1data2)分别切换到hadoop用户下,并分别cdhadoop用户的家目录,然后执行 ssh-keygen -t rsa 命令,这样的结果,是在各自家目录的.ssh文件夹中生成了对应的id_rsa.pub id_rsa 密钥对。

b> data1192.168.1.218),data2192.168.1.219)两台计算机中的公钥文件复制到master192.168.1.215)中,并重命名为id_rsa.pub218id_rsa.pub219,置于hadoop用户家目录下的.ssh文件夹下。命令参考如下: 

scp id_rsa.pub hadoop@master:~/.ssh/id_rsa.pub218
scp id_rsa.pub hadoop@master:~/.ssh/id_rsa.pub219

 hadoop@master表示用master中的hadoop用户登录master

这样以来,master主机hadoop用户的.ssh文件夹就有了以下三个公钥文件:

d_rsa.pubd_rsa.pub218d_rsa.pub218

c> master中,将以上三个文件以追加的形式写入authorized_keys文件,这些文件均位于hadoop用户.ssh文件夹中。 

cat id_rsa.pub >> authorized_keys 
cat id_rsa.pub218 >> authorized_keys
cat id_rsa.pub219 >> authorized_keys

 d> 更改 authorized_keys 文件的权限。这一步也可在分发后单独进行 

chmod 600 authorized_keys

 e> 分发authorized_keys 文件到data1,data2中hadoop用户的.ssh文件中,并再次检查权限 

scp authorized_keys hadoop@data1:~/.ssh/authorized_keys
scp authorized_keys hadoop@data2:~/.ssh/authorized_keys

 之后就可以在小集群中使用hadoop用户实现免密码登录了。

注意的是,如果使用的linux登录用户不是root用户,需要修改以下.ssh文件夹以及authorized_key文件的权限,否则是无法实现免密码登录的

chmod 700 .ssh
cd .ssh/
chmod 600 authorized_keys

 6、安装jdk 

先在master中安装,之后分发,这里使用的是jdk-8u112-linux-x64.tar.gz

 1> 解压安装

 首先需要切换到root用户 

su root
cd /usr
mkdir java
tar -zxvf jdk-8u112-linux-x64.tar.gz ./java
ln -s jdk1.8.0_112/ jdk

 2> 分发

scp -r /usr/java root@data2:/usr/
scp -r /usr/java root@data2:/usr/

3> 设置环境变量,三台都要设置

vim /etc/profile
export JAVA_HOME=/usr/java/jdk
export JRE_HOME=/usr/java/jdk/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
source /etc/profile

 7、安装hadoop

先在master下安装,再分发

安装的版本为2.6.5解压安装到/usr/Apache/目录下,并建立软连接

Hadoop所有配置文件的目录位于/usr/Apache/hadoop-2.6.5/etc/hadoop下,由于建立了一个软连接,所以/usr/Apache/hadoop/etc/hadoop是一样的

在hadoop软件目录的dfs文件夹中创建三个子文件夹name、data、tmp,下面属性的设置会用到,注意其所有者和所属组。

以下是配置文件的设置:

1> hdfs.site.xml 

<property><name>dfs.namenode.name.dir</name><value>file:/usr/Apache/hadoop/dfs/name</value>
</property>
<property><name>dfs.datanode.data.dir</name><value>file:/usr/Apache/hadoop/dfs/data</value>
</property>
<property><name>dfs.replication</name><value>3</value>
</property>
<property><name>dfs.namenode.secondary.http-address</name><value>master:50090</value>
</property>
<property><name>dfs.webhdfs.enabled</name><value>true</value>
</property>

2> mapred-site.xml

<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>
<property><name>mapreduce.jobhistory.address</name><value>master:10020</value>
</property>
<property><name>mapreduce.jobhistory.webapp.address</name><value>master:19888</value>
</property>

3> yarn-site.xml

设置如下: 

<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> 
</property> 
<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> 

 4> slaves配置文件

master
data1
data2

注:本例将master也作为了一个数据节点

5> hadoop-env.sh和yarn-env.sh

这是两个相当重要的环境变量配置文件,由于目前仅安装Hadoop,所以仅设置jdk即可,其他默认。

export JAVA_HOME=/usr/java/jdk

6> core-site.xml

<property>
<name>hadoop.tmp.dir</name><value>/usr/Apache/hadoop/tmp</value><description>A base for other temporary directories.</description>
</property>
<property><name>fs.defaultFS</name><value>hdfs://master:9000</value>
</property>

 

7> 将Apache文件夹分发到data1,data2对应的目录下

# 分发
scp -r ./Apache root@data1:/usr/
scp -r ./Apache root@data2:/usr/# 这里使用了root用户,记得分发后要改所有者与所属组
chown -R hadoop:hadoop Apache/

注意jdk是不需要改所有者与所属组的,因为通用 

8> 三台机器分别配置hadoop用户的.bashrc文件,设置环境变量

su hadoop
vim ~/.bashrc
export $HADOOP_HOME=/usr/Apache/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export CLASSPATH=.:$HADOOP_HOME/lib:$CLASSPATH
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bashrc

8、开启与结束

start-dfs.sh

start-yarn.sh

mr-jobhistory-daemon.sh start historyserver

yarn-daemon.sh start historyserver 


#####

stop-dfs.sh

stop-yarn.sh

mr-jobhistory-daemon.sh stop historyserver

yarn-daemon.sh stop historyserver

9、运行结果

相关进程

 

  

  

All Applications

http://192.168.1.215:8088

JobHistory 

http://192.168.1.215:19888

Master

http://192.168.1.215:50070

 

 

转载于:https://www.cnblogs.com/learn21cn/p/learn21cn.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows线程调度学习(一)

前言 Windows 线程调度器的实现分散在内核各处&#xff0c;并且与许多组件都有关联&#xff0c;很难进行系统地学习&#xff0c;所以我打算写几篇文章来记录下自己学习过程中的思考和分析&#xff0c;同时也方便日后查阅&#xff0c;此文可以看作是《Windows内核原理与实现》中…

scapy 安装及简单测试

关于scapy Scapy的是一个强大的交互式数据包处理程序&#xff08;使用python编写&#xff09;。它能够伪造或者解码大量的网络协议数据包&#xff0c;能够发送、捕捉、匹配请求和回复包等等。它可以很容易地处理一些典型操作&#xff0c;比如端口扫描&#xff0c;tracerouting&…

JavaScript 基础知识 - BOM篇

前言 本篇文章是JavaScript基础知识的BOM篇&#xff0c;如果前面的《JavaScript基础知识-DOM篇》看完了&#xff0c;现在就可以学习BOM了。 注意&#xff1a; 所有的案例都在这里链接: 提取密码密码: yvxo&#xff0c;文章中的每个案例后面都有对应的序号。 1. BOM 基本概念 B…

全球首例机器人自杀事件 因受够无聊家务

据凤凰网,一个奥地利家庭购买一小机器人,每天工作就是倒垃圾、倒垃圾。一天完工后,它竟自己启动,爬到炉边&#xff0c;推开上面的锅&#xff0c;把自己活活烧死…专家称这个机器人实在受够了无聊的家务琐事&#xff0c;才毅然选择自杀机器人也是有尊严的!为这有骨气的robot点根…

【python基础】——数据类型(列表、字典、集合)

骏马金龙——python语法基础 python基础 变量与运算 符号//%**意义整除整除取余幂次方数据种类 #mermaid-svg-7nSRRijcYFCYwTDr .label{font-family:trebuchet ms, verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-7nSRRijcYFCYw…

机器人实现屠宰自动化

当 WESTFLEISCH 注册合作社考虑在 Coesfeld 肉类加工中心内自动化原有的人工屠宰设备过程时&#xff0c;首先在“剔除直肠”及“切开盆腔骨及腹部”两个流程中测试使用了两台库卡机器人。在此过程中&#xff0c;机器人主要以它工作的质量及经济效益说服了使用者。 实施措施/解…

python数据结构《排序专题复习》

目录 常见的三种排序方法 冒泡排序 插入排序 选择排序 其他经典的排序方法 快速排序 堆排序 归并排序 希尔排序 不同排序方法的各维度对比 排序方式的稳定性&#xff1a;若两个相同的元素在排序前后的相对位置不发生改变的排序为稳定排序&#xff0c;否则不稳定排序 常…

BZOJ2844 albus就是要第一个出场

AC通道&#xff1a;http://www.lydsy.com/JudgeOnline/problem.php?id2844 这题貌似HDU上有一道差不多的题&#xff0c;不过我没做过&#xff0c;也就没管了。 首先讲一个线性基的东西&#xff0c;大概就是这样&#xff1a; 然后就是一个什么性质&#xff1a;S异或起来会出现重…

HTG Explains: Why Linux Doesn’t Need Defragmenting

If you’re a Linux user, you’ve probably heard that you don’t need to defragment your Linux file systems. You’ll also notice that Linux distributions don’t come with disk-defragmenting utilities. But why is that? To understand why Linux file systems d…

Spring AOP 实战运用

Spring AOP 实战 看了上面这么多的理论知识, 不知道大家有没有觉得枯燥哈. 不过不要急, 俗话说理论是实践的基础, 对 Spring AOP 有了基本的理论认识后, 我们来看一下下面几个具体的例子吧.下面的几个例子是我在工作中所遇见的比较常用的 Spring AOP 的使用场景, 我精简了很多有…

大话设计模式之策略模式

第二章&#xff1a;商场促销——策略模式 策略模式的定义:策略模式是一种定义一系列算法的方法&#xff0c;从概念上来看&#xff0c;所有这些算法完成的都是相同的工作&#xff0c;知识实现不同&#xff0c;他可以以相同的方式调用所有的算法&#xff0c;减少了各类算法类与使…

【Python学习】——语言风格(变量赋值、深浅拷贝、for循环陷阱)

目录 1、赋值 2、赋值的分类——引用赋值、值赋值 1) 不可变对象引用赋值——字符串、数值、元组等 2&#xff09;可变对象引用赋值——列表、集合、字典 3&#xff09;可变与不可变对象的引用赋值内部分析 4&#xff09;在py文件中&#xff0c;和作用域有关&#xff0c;如…

判断庄家是否出货

1. 大盘处于强势的时候 日平均线在横盘的时候&#xff0c;缓慢拉升然后急剧下跌 高位盘整的时候 2. 有利好消息发布的时候 因为庄家会利用这个对于散户来说这个买入时机来进行出货操作&#xff0c;可见庄家真是阴险狡诈转载于:https://www.cnblogs.com/dcz1001/p/6115893.html

【深度学习】——常见深度学习模型总结、anchor-free和anchor-based

目录 1、faster rcnn&#xff1a; 2、SSD&#xff1a; 3、YOLOv1: 小结&#xff1a; 拓展&#xff1a;anchor-based和anchor-free anchor 1、faster rcnn&#xff1a; FasterRcnn 算法原理讲解笔记&#xff08;非常详细&#xff09;https://blog.csdn.net/xjtdw/article…

真静态和伪静态的区别

首先肯定的是纯静态和伪静态都是SEO的产物&#xff0c;但纯静态和伪静态还是有很大区别的。 纯静态是生成真实的HTML页面保存到服务器端&#xff0c;用户访问时直接访问这 个HTML页面即可&#xff0c;从而大大的减轻了服务器压力&#xff08;如dedecms就是采用的纯静态&#xf…

非常有趣的Console

console觉醒之路&#xff0c;打印个动画如何&#xff1f; 原文地址: http://www.helloweba.com/view-blog-383.html 批量去掉或替换文本中的换行符&#xff08;notepad、sublime text2&#xff09; 原文地址&#xff1a;http://m.blog.csdn.net/article/details?id43228729 有…

假期实践

第一天 地点:杭州颐高数码城 第一天&#xff0c;我来到了自己家附近的颐高数码城。文三路这边有一个卖数码产品的一条街&#xff0c;这里也是最贴近我专业实践的地方&#xff0c;所以第一天的实践我选择了这里。 2001年开业的颐高数码广场座落于“电子一条街”文三路、学院路口…

3.AngularJS-过滤器

转自&#xff1a;https://www.cnblogs.com/best/p/6225621.html 二、过滤器 使用过滤器格式化数据&#xff0c;变换数据格式&#xff0c;在模板中使用一个插值变量。语法格式如下&#xff1a; {{ express | filter:parameter1:p2:p3… | … | …}} 过滤器分了内置过滤器与自定义…

【深度学习】——训练过程

包含哪些层 训练过程 其实就是yf(x)的求参过程&#xff0c;先给参数一个初始值&#xff0c;然后根据初始函数计算得到预测值&#xff0c;根据预测值和真值计算损失&#xff0c;然后又根据损失函数进行反向传播更新参数&#xff0c;更新参数后&#xff0c;再次计算预测值&#…

thinkphp自定义模板标签(一)

thinkphp内置的foreach和include等模板标签使用是非常方便的&#xff1b;但是内置的那些标签只能满足常用功能&#xff0c;个性化的功能就需要我们自己编写自定义模板标签了&#xff1b;下面就是要讲解如何实现&#xff1b; 示例环境&#xff1a;thinkphp3.2.3 thinkphp的模板标…