Hadoop学习(一):完全分布式集群环境搭建
1. 设置免密登录
(1) 新建普通用户hadoop:useradd hadoop
(2) 在主节点master上生成密钥对,执行命令ssh-keygen -t rsa便会在home文件夹下生成 .ssh 文件以及id_rsa和id_rsa.pub文件 注意:.ssh文件夹的权限为700,否则会影响其他机器的免密登录
(3) 执行命令:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 authorized_keys #修改文件的权限为600
(4) 将authorized_keys文件拷贝到下一个主机上后重复上述操作。
scp ~/.ssh/authorized_keys hadoop@slave1:/home/hadoop/.ssh/authorized_keys
若拷贝出错,则在.ssh文件 可手动建立,但是注意修改其权限为700:chmod 700 .ssh
。。。
以此类推,最终在最后一个节点上的authorized_keys上包括了所有主机的公钥,再将它拷贝到其他节点上,完成免密登录的设置。
2.设置hosts文件
本人搭建的Hadoop环境包括有一个主节点和三个从节点,配置为:一个NameNode,一个SecondaryNameNode以及两个DataNode。
/etc/hosts添加配置如下
10.0.209.122 master122 hadoop-NameNode-122
10.0.209.123 slave123 hadoop-SecondaryNameNode-123
10.0.209.124 slave124 hadoop-DataNode-124
10.0.209.125 slave125 hadoop-DataNode-125
在一个主机上配置完成后,将该文件拷贝到其他节点之上。
3.安装Hadoop
首先,在master节点上,使用root用户在/usr/local/文件夹下新建hadoop文件夹,并修改该文件夹对普通用户有读写权限
mkdir /usr/local/hadoop
chmod 777 /usr/local/hadoop
使用普通用户hadoop登录:su hadoop
下载jdk1.8安装包以及hadoop的安装包,并加压文件到/usr/local/hadoop下
wget wget http://apache.claz.org/hadoop/common/hadoop-2.8.1/hadoop-2.8.1.tar.gz
tar -xzvf hadoop-2.8.1.tar.gz -C /usr/local/hadoop
加压后/usr/local/hadoop/文件夹下包含jdk1.8以及hadoop2.8.1,
切换到root用户,编辑/etc/profile文件
JAVA_HOME=/usr/local/hadoop/jdk1.8.0_102
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
HADOOP_HOME=/usr/local/hadoop/hadoop-2.8.1
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME
export PATH
export HADOOP_HOME
export CLASSPATH
保存后执行source /etc/profile 使其立即生效。
然后执行java -version和hadoop version验证,配置安装成功。
4.配置Hadoop集群
(1). 配置core-site.xml
修改Hadoop核心配置文件/usr/local/hadoop/etc/hadoop/core-site.xml,通过fs.default.name指定NameNode的IP地址和端口号,通过hadoop.tmp.dir指定hadoop数据存储的临时文件夹。
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/hadoop-2.8.1/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master122:9000</value>
</property>
</configuration>
特别注意:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被删除,必须重新执行format才行,否则会出错。
(2).配置hdfs-site.xml
修改HDFS核心配置文件/usr/local/hadoop/etc/hadoop/hdfs-site.xml,通过dfs.replication指定HDFS的备份因子为3,通过dfs.name.dir指定namenode节点的文件存储目录,通过dfs.data.dir指定datanode节点的文件存储目录。
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name> #配置SecondaryNameNode
<value>slave123:50090</value>
</property>
</configuration>
(3).配置mapred-site.xml
拷贝mapred-site.xml.template为mapred-site.xml,再进行修改。
cp /usr/local/hadoop/hadoop-2.8.1/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/hadoop-2.8.1/etc/hadoop/mapred-site.xml
vi /usr/local/hadoop/hadoop-2.8.1/etc/hadoop/mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://hadoop-master:9001</value>
</property>
</configuration>
(4).配置yarn-site.xml
<!-- Site specific YARN configuration properties –>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-master</value>
</property>
</configuration>
(5).配置masters文件
增加/usr/local/hadoop/etc/hadoop/masters文件,该文件指定namenode节点所在的服务器机器。添加namenode节点的主机名master122;不建议使用IP地址,因为IP地址可能会变化,但是主机名一般不会变化。另外,为将SecondaryNameNode与NameNode分开,可将SecondaryNameNode节点的主机也加入到masters文件之中。
master122
slave123
(6).配置slaves节点(Master主机特有)
修改/usr/local/hadoop/etc/hadoop/slaves文件,该文件指定哪些服务器节点是datanode节点。删除locahost,添加所有datanode节点的主机名,如下所示。
vi /usr/local/hadoop/hadoop-2.8.1/etc/hadoop/slaves
slave123
slave124
slave125
(7).配置hadoop-env.sh文件
修改jdk的目录,以及集群间免密互连的端口(由于本人修改了ssh的默认端口,而hadoop默认是以22端口连接,所以需要进行添加配置)
export JAVA_HOME=/usr/local/hadoop/jdk1.8.0_102 #修改jdk路径
export HADOOP_SSH_OPTS="-p 22000" #添加ssh自定义端口
(8).配置ssh客户端配置
由于修改了ssh的默认端口,使得在使用ssh以及scp时都要加上-p/-P 非常的繁琐(主要是因为懒,懒是人类进步的阶梯),所以修改ssh的客户端配置,使其默认配置端口为自定义端口。
vi /etc/ssh/ssh_config
Port 22000 #将源端口22修改为自定义端口22000
5.同步配置到其他节点
第4步配置是在主节点master上进行的配置,下面要将上述配置好的jdk以及hadoop软件包拷贝到其他从节点上,首先在各个从节点建立文件夹/usr/local/hadoop,并将其权限设置为777,然后用普通用户hadoop执行命令:
scp -r /usr/local/hadoop/* slave123:/usr/local/hadoop/ &
scp -r /usr/local/hadoop/* slave124:/usr/local/hadoop/ &
scp -r /usr/local/hadoop/* slave125:/usr/local/hadoop/ &
由于已经配置ssh客户端的连接端口,所以这里不需要特意指定,加‘&’因为hadoop/下包含jdk以及hadoop软件包,文件很大,放入后台执行更方便。
下面继续将/etc/profile下的JAVA_HOME和HADOOP_HOME配置同步配置到其他节点,至此集群的搭建配置完成。
6.启动集群
在主节点master上进入到/usr/local/hadoop/hadoop-2.8.1/执行命令:
bin/hadoop namenode -format #格式化namenode,第一次启动服务前执行的操作,以后不需要执行。
然后启动hadoop:
sbin/start-all.sh
执行jps命令查看运行情况
通过简单的jps命令虽然可以查看HDFS文件管理系统、MapReduce服务是否启动成功,但是无法查看到Hadoop整个集群的运行状态。我们可以通过hadoop dfsadmin -report进行查看。用该命令可以快速定位出哪些节点挂掉了,HDFS的容量以及使用了多少,以及每个节点的硬盘使用情况。
停止hadoop命令:sbin/stop-all.sh
至此,hadoop集群搭建配置完毕。
7.可能的错误
The authenticity of host ‘0.0.0.0 (0.0.0.0)’ can’t be established.
解决方案:关闭SELINUX
-- 关闭SELINUX# vim /etc/selinux/config-- 注释掉#SELINUX=enforcing#SELINUXTYPE=targeted-- 添加SELINUX=disabled
Hadoop学习(一):完全分布式集群环境搭建的更多相关文章
- (六)hadoop系列之__hadoop分布式集群环境搭建
配置hadoop(master,slave1,slave2) 说明: NameNode: master DataNode: slave1,slave2 ------------------------ ...
- Spark 1.6.1分布式集群环境搭建
一.软件准备 scala-2.11.8.tgz spark-1.6.1-bin-hadoop2.6.tgz 二.Scala 安装 1.master 机器 (1)下载 scala-2.11.8.tgz, ...
- Hadoop完全分布式集群环境搭建
1. 在Apache官网下载Hadoop 下载地址:http://hadoop.apache.org/releases.html 选择对应版本的二进制文件进行下载 2.解压配置 以hadoop-2.6 ...
- ZooKeeper 完全分布式集群环境搭建
1. 搭建前准备 示例共三台主机,主机IP映射信息如下: 192.168.32.101 s1 192.168.32.102 s2 192.168.32.103 s3 2.下载ZooKeeper, 以 ...
- Kafka 完全分布式集群环境搭建
思路: 先在主机s1上安装配置,然后远程复制到其它两台主机s2.s3上, 并分别修改配置文件server.properties中的broker.id属性. 1. 搭建前准备 示例共三台主机,主机IP映 ...
- Hadoop伪分布式集群环境搭建
本教程讲述在单机环境下搭建Hadoop伪分布式集群环境,帮助初学者方便学习Hadoop相关知识. 首先安装Hadoop之前需要准备安装环境. 安装Centos6.5(64位).(操作系统再次不做过多描 ...
- Hadoop学习笔记—13.分布式集群中节点的动态添加与下架
开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如何动态(不关机且正在运行的情况下)地添加一个Hadoop节点与 ...
- 阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建
准备: 两台配置CentOS 7.3的阿里云ECS服务器: hadoop-2.7.3.tar.gz安装包: jdk-8u77-linux-x64.tar.gz安装包: hostname及IP的配置: ...
- Hadoop+HBase+ZooKeeper分布式集群环境搭建
一.环境说明 集群环境至少需要3个节点(也就是3台服务器设备):1个Master,2个Slave,节点之间局域网连接,可以相互ping通,下面举例说明,配置节点IP分配如下: Hostname IP ...
随机推荐
- webuploader实现上传视频
之前有人让我做一个webuploader上传视频,但是一直没有时间,现在抽出了时间来.来完成以下这个简单的demo 第一步,上传视频和上传 图片有什么区别么? 其实是没有的,因为执行的操作都是上传,所 ...
- MySQL索引的使用及注意事项
索引是存储引擎用于快速找到记录的一种数据结构.索引优化应该是对查询性能优化最有效的手段了.索引能够轻易将查询性能提高几个数量级,"最优"的索引有时比一个"好的" ...
- 微信支付tp5.1集合
多商户号微信支付 配置 自己改一改 逻辑 就好了! 写的菜 勿喷 extend下面 主要目录 多商户号 配置项 根据自己的需求更改 可能有一些地方存在BUG 自己调试一下 就OK了,别像一个麻瓜一样 ...
- Struts2+Datagrid表格显示(可显示多表内容)
概述 最近学到EasyUI的Datagrid数据网格,然后就做了一个小例子,中间层利用Struts2来完成,DAO层用的是Hibernate. 数据库 数据库涉及到stuednt(name,noid, ...
- Python的scrapy之爬取顶点小说网的所有小说
闲来无事用Python的scrapy框架练练手,爬取顶点小说网的所有小说的详细信息. 看一下网页的构造: tr标签里面的 td 使我们所要爬取的信息 下面是我们要爬取的二级页面 小说的简介信息: 下面 ...
- Django模板语言与视图(view)
常用语法 {{ }}和{% %} 变量相关的用{{}} , 逻辑相关的用{% %} 变量 在Django的模板语言中按此语法使用:{{ 变量名 }}. 当模版引擎遇到一个变量,它将计算这个变量,然后 ...
- MDK/Keil 中,J-Link调试查看变量值总是显示<not in scope>
转载请注明出处,谢谢. MDK/Keil 中,J-Link调试查看变量值总是显示<not in scope> 原因:编译器把代码优化掉了,直接导致在仿真中变量根本没有分配内存,也就无法查看 ...
- MongoDB入门---聚合操作&管道操作符&索引的使用
经过前段时间的学习呢,我们对MongoDB有了一个大概的了解,接下来就要开始使用稍稍深入一点的东西了,首先呢,就是MongoDB中的聚合函数,跟mysql中的count等函数差不多.话不多说哈,我们先 ...
- 【BZOJ2286】消耗战(虚树,动态规划)
[BZOJ2286]消耗战(虚树,动态规划) 题面 BZOJ Description 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总 ...
- 北京Uber优步司机奖励政策(4月8日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...