最近大数据课程需要我们熟悉分布式环境,每组分配了四台服务器,正好熟悉一下hadoop相关的操作。

注:以下带有(master)字样为只需在master机器进行,(ALL)则表示需要在所有master和slave机器进行配置。

一、更改各主机名称并配置免密登陆

1、将各台主机的ip与hostname的映射添加到hosts文件中上。(ALL)

vi /etc/hosts

在末尾加上 xx.xx.xx.xx <hostname> 的映射,以后直接 ssh <hostname>就可以访问,不必再输前边一大串数字。

不过这样只是登录的时候方便,连接上后显示的hostname还是原有的hostname,下一步我们更改各台主机显示的hostname。

2、ssh登录各台主机,并修改hostname

sudo hostnamectl set-hostname <newhostname>

修改完成后并不会马上效,可以exit再重新进入看一看。

下图可以看到,原有的hostname slave-3已经被修改成了data1

3、配置master免密登陆其他几台主机(master)

在master生成RSA密钥,出现以下界面即成功。

ssh-keygen -t rsa

将密钥分发到其他几台主机上,这个过程会需要我们输入各台主机的密码。

ssh-copy-id -i ~/.ssh/id_rsa.pub <hostname>

出现下图即为成功,但我们目前仍位于master主机上,接下来可以 ssh <hostname> 试一下能否免密登陆。

二、配置jdk与Hadoop集群环境

我这里是直接scp从服务器拉取的压缩包(需要输入密码),其实也可以从官网下载以及本地上传等方式。

scp root@xx.xx.xx.xx:/root/jdk-7u80-linux-x64.tar.gz /root
scp root@xx.xx.xx.xx:/root/hadoop-2.7.7.tar.gz /root

1、解压并安装jdk,并移动到新目录(ALL)

tar -zxvf jdk-7u80-linux-x64.tar.gz
mv jdk1..0_80/ /root/software/jdk

2、解压并安装Hadoop,并移动到新目录(ALL)

tar -zxvf hadoop-2.7..tar.gz
mv hadoop-2.7. /root/software/hadoop

3、配置java与Hadoop的环境变量(ALL)

关于java配置可以看我另一篇Spring部署的帖子,上面也有相关的操作。

vi ~/.bashrc

加入如下内容

#更改于2018年12月26日
#操作者:XXX
#添加java与hadoop环境变量
export JAVA_HOME=/root/software/jdk/jdk1..0_80
export PATH=$PATH:$JAVA_HOME/bin export HADOOP_HOME=/root/software/hadoop/hadoop-2.7.
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

source命令让修改立刻生效。

source ~/.bashrc

可以使用java与hadoop命令查看版本号,验证是否安装成功。

java -version
hadoop version

4、进一步修改hadoop相关配置文件(ALL)

下面的配置文件都是位于该文件位于software/hadoop/hadoop-2.7.7/etc/hadoop/文件夹下的。

4.1修改hadoop-env.sh文件,配置JDK的路径

使用vi找到 export JAVA_HOME=${JAVA_HOME} 的一行,修改为绝对地址,而非JAVA_HOME

export JAVA_HOME=/root/software/jdk/jdk1.7.0_80

4.2修改core-site.xml文件

在<configuration></configuration>中添加如下内容(hadooptmp文件夹需要在root/software下创建)

<!--XXX于2018年12月26日修改configuration-->
<!--HDFS Web UI监听端口配置-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<!--更改hadoop缓存目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/root/software/hadooptmp</value>
</property>

4.3修改hdfs-site.xml文件

在<configuration></configuration>中添加如下内容(同理,namenode和datanode也需要相应创建)

<!--每个block存几份-->
<property>
<name>dfs.replication</name>
<value></value>
</property> <!--namenode数据目录-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/root/software/hadooptmp/namenode</value>
</property> <!--datanode数据目录-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/software/hadooptmp/datanode</value>
</property>

4.4从mapred-site.xml.template使用cp命令生成mapred-site.xml文件,并修改mapred-site.xml文件

cp mapred-site.xml.template mapred-site.xml

在<configuration></configuration>中添加如下内容

<!--设置MapReduce运行于yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

4.5修改yarn-site.xml文件

在<configuration></configuration>中添加如下内容

<!--如果使用spark等其他分布式计算框架,需要相应修改-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property> <property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>

4.6修改slaves文件,将已经映射的ip地址的主机名称追加到结尾即可。

同时还需要删除原有的loaclhost(伪分布式才会这么写)。

4.7slave机器按照4.1到4.6部署

重复操作很多,各位可以写个脚本自动执行,也可以直接把software文件夹压缩再scp拉过去。

master机器执行如下命令

tar -zcvf /root/software.tar.gz software/

slave机器执行如下命令

scp root@xx.xx.xx.xx:/root/software.tar.gz /root
tar -zxvf software.tar.gz

这样software里面大部分修改 都不需要再做,把剩余的工作重复一下就ok。

三、HDFS简单操作

1、启动HDFS(执行一次即可,不必每次都执行)

1.1执行如下命令,格式化文件系统(master)

这一步需要在所有服务器上进行,有一点要注意,就是执行命令的目录不能低于software,否则会出现找不到目录的情况。

./software/hadoop/hadoop-2.7.7/bin/hdfs namenode -format

成功截图:

1.2开启HDFS:运行 NameNode和 DataNode的守护进程(master)

执行如下命令,开启HDFS

bash /root/software/hadoop/hadoop-2.7.7/sbin/start-dfs.sh

1.3jps命令验证HDFS是否启动成功(ALL)

master服务器:

上面key验证失败是因为之前的slaves文件没有删除localhost,删除之后就可以顺利进行了。

slave服务器:

如果jps发现进程不对的话,可以去/root/software/hadoop/hadoop-2.7.7/logs目录下查看相关的log文件,定位到最后的错误,然后想办法解决就ok~

2、启动yarn

2.1启动运行ResourceManager和NodeManager守护进程(master)

bash /root/software/hadoop/hadoop-2.7./sbin/start-yarn.sh

执行效果如图:

2.2验证yarn是否开启成功(ALL)

master机器:

slave机器:

参考资料:

1、Hadoop-env.sh[翻译]

2、Hadoop学习(二) Hadoop配置文件参数详解

3、Hadoop启动操作过程及常见错误

4、遇到问题---Hadoop---java.io.IOException: NameNode is not formatted

简单Hadoop集群环境搭建的更多相关文章

  1. Hadoop集群环境搭建步骤说明

    Hadoop集群环境搭建是很多学习hadoop学习者或者是使用者都必然要面对的一个问题,网上关于hadoop集群环境搭建的博文教程也蛮多的.对于玩hadoop的高手来说肯定没有什么问题,甚至可以说事“ ...

  2. hadoop集群环境搭建之zookeeper集群的安装部署

    关于hadoop集群搭建有一些准备工作要做,具体请参照hadoop集群环境搭建准备工作 (我成功的按照这个步骤部署成功了,经实际验证,该方法可行) 一.安装zookeeper 1 将zookeeper ...

  3. hadoop集群环境搭建之安装配置hadoop集群

    在安装hadoop集群之前,需要先进行zookeeper的安装,请参照hadoop集群环境搭建之zookeeper集群的安装部署 1 将hadoop安装包解压到 /itcast/  (如果没有这个目录 ...

  4. hadoop集群环境搭建准备工作

    一定要注意hadoop和linux系统的位数一定要相同,就是说如果hadoop是32位的,linux系统也一定要安装32位的. 准备工作: 1 首先在VMware中建立6台虚拟机(配置默认即可).这是 ...

  5. 大数据 -- Hadoop集群环境搭建

    首先我们来认识一下HDFS, HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.它其实是将一个大文件分成若干块保存在不同服务器的多个节点中.通过联网 ...

  6. Spark集群环境搭建——Hadoop集群环境搭建

    Spark其实是Hadoop生态圈的一部分,需要用到Hadoop的HDFS.YARN等组件. 为了方便我们的使用,Spark官方已经为我们将Hadoop与scala组件集成到spark里的安装包,解压 ...

  7. Hadoop集群环境搭建(一)

    1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有 NameNode / DataN ...

  8. Java+大数据开发——Hadoop集群环境搭建(一)

    1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有 NameNode / DataN ...

  9. Hadoop(4)-Hadoop集群环境搭建

    准备工作 开启全部三台虚拟机,确保hadoop100的机器已经配置完成 分发脚本 操作hadoop100 新建一个xsync的脚本文件,将下面的脚本复制进去 vim xsync #这个脚本使用的是rs ...

随机推荐

  1. Qt之界面实现技巧-- 窗体显示,绘制背景,圆角,QSS样式

    转自 --> http://blog.sina.com.cn/s/blog_a6fb6cc90101dech.html 总结一下,在开发Qt的过程中的一些技巧!可遇而不可求... 一.主界面 1 ...

  2. 大话设计模式--策略模式 strategy -- C++实现实例

    1. 策略模式: 它定义了算法家族, 分别封装起来,使他们之间可以相互替换,此模式让算法变化, 不会影响到使用算法的客户. 用相同的方法调用不同的算法,减少各种算法类与使用算法类之间的耦合. 实例中策 ...

  3. mysql 根据sql查询语句导出数据

    在这里提供2中方式: 建议:可以使用方式二,就不使用方式一. 方式一: 在linux下支持,window下不支持. 进入到mysql的bin目录,或者已经给mysql配置了环境变量就不用进入bin目录 ...

  4. 创建HTML5/CSS3单页Web布局

    1. [图片] 第1步:PhotoShop ​2. [代码]第2步:index.html <!DOCTYPE html><!-- The new doctype -->< ...

  5. java:练习学校学生

    java:练习学校学生 一个学生对应一个学校 一个学校对应多个学生 Student类,School类,Demo测试类 Student: public class Student { private S ...

  6. C#子线程执行完后通知主线程

    其实这个比较简单,子线程怎么通知主线程,就是让子线程做完了自己的事儿就去干主线程的转回去干主线程的事儿. 那么怎么让子线程去做主线程的事儿呢,我们只需要把主线程的方法传递给子线程就行了,那么传递方法就 ...

  7. PostgreSQL物化视图(materialized view)

    1.创建视图 CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] table_name [ (column_name [, ...] ) ] [ WITH ( sto ...

  8. FEC之我见一

    顾名思义,FEC前向纠错,根据收到的包进行计算获取丢掉的包,而和大神沟通的结果就是 纠错神髓:收到的媒体包+冗余包 >= 原始媒体包数据   直到满足 收到的媒体包+ 冗余包 >= 原始媒 ...

  9. ONTAK2010 Peaks加强版

    给一个图,每个点有点权,$q$ 次询问从 $x$ 开始只走点权小于等于 $y$ 的路径能到的点中第 $k$ 大的点权,无解输出 -1 强制在线 请注意因为这个 sb 博主为了描述方便,这里的题目描述用 ...

  10. 20179203李鹏举 《Linux内核原理与分析》第一周学习笔记

    Linux基础入门 一.Linux的基础学习 1.1 Linux的重要基础操作 Linux不同于Windows的纯粹的图形化界面,虽然也有图形桌面的操作但是更多的操作还是通过命令行来进行,当然除了命令 ...