Hadoop+Hive学习笔记-4

Hadoop 集群搭建

配置三台虚拟机之间的免密登录

1 切换到root用户:crontab -e

在第一行写入:*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
三台机器都一同操作,这一步让三台机器的时间服务器一致

2 关闭selinux:vim /etc/selinux/config

vim编辑器打开文件,把里面的SELINUX值修改为disabled
这一步是关闭selinux
selinux是什么呢?
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。

网上有评价这样说的:
SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。如果可以熟练掌握 SELinux 并正确运用,我觉得整个系统基本上可以到达"坚不可摧"的地步了(请永远记住没有绝对的安全)。掌握 SELinux 的基本概念以及简单的配置方法是每个 Linux 系统管理员的必修课。

我的学习目的是数据分析,就没有深入研究这个东西,所以…关闭掉…

3 配置免密登录

在第一台虚拟机(我的是node201)上执行以下操作:
ssh-keygen -t rsa 连按回车就行了,之前配置过,所以overwrite了一下,第一次配置是没有了
keygen
出现图中的样子,就是OK了
然后进入下一步,操作如下:
ssh node201
ssh node202
exit
ssh node203
exit
ssh-copy-id node201
ssh-copy-id node201
ssh-copy-id node201
scp ~/.ssh/* hadoop@node202:/home/hadoop/.ssh/
scp ~/.ssh/* hadoop@node203:/home/hadoop/.ssh/

这些步骤的作用是记录三台机器间的登录记录,创建了密钥,以后三台机器之间相互登录就不用密码了
这个配置在第一台虚拟机上操作即可,我的node201 node202 node203三台虚拟机可以免密登录了

传输并解压文件

之前已经准备好了,需要的jdk、hadoop、hive的压缩文件,这里从Windows向Linux传输文件用到了一个工具Xftp
直接连接好把文件拖从左边拖到右边就OK了,很好用
直接放倒了家目录里就可以
在这里插入图片描述

在root用户下创建module目录
cd /opt
mkdir module
修改它的所有者和所属组为hadoop
chgrp hadoop module
chown hadoop module
这里比较简单就不截图了

这里需要把三个传输好的压缩文件解压:
tar -zxvf ./jdk-8u181-linux-x64.tar.gz -C /opt/module/
tar -zxvf ./hadoop-2.7.3.tar.gz -C /opt/module/
tar -zxvf ./apache-hive-3.1.1-bin.tar.gz -C /opt/module/

配置环境变量

用编辑器打开vim ~/.bash_profile
这里引用一下别的博主的文章:

~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
注:~在LINUX下面是代表HOME这个变量的。
另外在不同的LINUX操作系统下,这个文件可能是不同的,可能是~/.bash_profile; ~/.bash_login或
/.profile其中的一种或几种,如果存在几种的话,那么执行的顺序便是:/.bash_profile、 ~/.bash_login、
/.profile。比如我用的是Ubuntu,我的用户文件夹下默认的就只有/.profile文件。 ————————————————
版权声明:本文为CSDN博主「碧空独云」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hnoysz/article/details/78666272

在文本末尾添加我们的环境变量配置:
JAVA_HOME=/opt/module/jdk1.8.0_181
HADOOP_HOME=/opt/module/hadoop-2.7.3
HIVE_HOME=/opt/module/apache-hive-3.1.1-bin
PATH= P A T H : PATH: PATH:HOME/bin: J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:HADOOP_HOME/bin: H A D O O P H O M E / s b i n : HADOOP_HOME/sbin: HADOOPHOME/sbin:HIVE_HOME/bin

export JAVA_HOME
export HADOOP_HOME
export HIVE_HOME
export PATH
环境变量
:wq之后,环境变量就修改好了

这里要注意 重新加载该文件,使环境变量生效
source ~/.bash_profile
用java -version 和hadoop version可以查看当前的版本号等信息
在这里插入图片描述

修改hadoop的配置文件

先进入hadoop路径 cd /opt/module/hadoop-2.7.3/etc/hadoop

1.vim ./hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_181
在这里插入图片描述

2.vim ./mapred-env.sh

这里注意,原来的哪行是被注释掉的,用 export JAVA_HOME=/opt/module/jdk1.8.0_181 替换掉
在这里插入图片描述
在这里插入图片描述

3.vim ./yarn-env.sh

同样,这一行也是被注释掉的,用 export JAVA_HOME=/opt/module/jdk1.8.0_181 替换掉
在这里插入图片描述

前三项是为了配置java的环境变量

4.vim ./core-site.xml

    <!-- 指定HDFS中NameNode的地址 -->
    <property>
            <name>fs.defaultFS</name>
            <value>hdfs://node201:9000</value>
    </property>

    <!-- 指定Hadoop运行时产生文件的存储目录 -->
    <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/module/hadoopdata</value>
    </property>

在文件中的configuration标签内加入上面代码
在这里插入图片描述
这一步设定了namenode是在node201虚拟机上
下面几步差不多,就不贴图了

5.vim ./hdfs-site.xml

    <!-- 指定HDFS副本的数量 -->
    <property>
            <name>dfs.replication</name>
            <value>3</value>
    </property>

    <!-- 指定Hadoop辅助名称节点主机配置 -->
    <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>node203:50090</value>
    </property>

这一步和第四部一样,也是要在configuration标签内加入我们的配置代码
这一步设置了辅助namenode节点在node203虚拟机
HDFS副本数量和虚拟机数量一致,设为3

6.vim ./mapred-site.xml

这里默认应该是没有这个文件的,所以先执行:
cp ./mapred-site.xml.template ./mapred-site.xml
然后再编辑文件:vim ./mapred-site.xml

<!-- 指定MR运行在yarn上 -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

这一步设置了mapreduce运行在yarn上

7.vim ./yarn-site.xml

    <!-- Reducer获取数据的方式 -->
    <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定YARN的ResourceManager的地址 -->
    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>node201</value>
    </property>

这一步指定了yarn的resource manager运行在node201上

8.vim ./slaves

这里是设置从属服务器,默认是localhost,删掉修改成我们的机器名
在这里插入图片描述

截止目前为止,第一台虚拟机的Hadoop基本已经配置好了

现在要把第一台的jdk和Hadoop复制到另外两台机器上

进入module目录,开始复制:
scp -r /opt/module/hadoop-2.7.3 hadoop@node202:/opt/module/
在这里插入图片描述
我们一共三台虚拟机,所以另外一台也要复制:
scp -r /opt/module/hadoop-2.7.3 hadoop@node203:/opt/module/
scp -r /opt/module/jdk1.8.0_181/ hadoop@node202:/opt/module/
scp -r /opt/module/jdk1.8.0_181/ hadoop@node203:/opt/module/

接下来偷个懒,直接把环境变量也复制到另外两台虚拟机:
scp ~/.bash_profile hadoop@node202:/home/hadoop/
scp ~/.bash_profile hadoop@node203:/home/hadoop/

在这里插入图片描述
环境变量复制完之后,记得回两台虚拟机上让配置文件生效
在另外两台上都执行:source ~/.bash_profile
然后用java -version和hadoop version 检查一下是否复制成功

格式化Hadoop集群

这里注意要在主节点上也就是第一台虚拟机上进行格式化
执行:hdfs namenode -format

启动/关闭hadoop集群

启动集群

在主节点机器上执行:start-all.sh 启动集群
在这里插入图片描述

验证Hadoop集群是否正常启动

执行完启动之后,分别在三台虚拟机上运行jps命令,查看当前的Java进程是否正确
主节点机器上应该有5个进程:
在这里插入图片描述
另外两台虚拟机上应该分别有3和4个进程如下:
在这里插入图片描述
在这里插入图片描述
这样进程这样的话,Hadoop集群就是已经正常运行了

关闭集群,在主节点这台机器上执行:stop-all.sh
因为后面还要调试,暂时不运行

验证集群

访问端口:192.168.5.201:50070
如果集群正常启动
在这里插入图片描述
访问端口192.168.5.201:8088,如果正常启动则:
在这里插入图片描述

Hadoop的wordcount

1.vim word.txt

新建一个word.txt文件,然后insert经典的:
hello world
:wq 退出之后,开始我们的测试

2.wordcount测试

在Hadoop集群运行的情况下:hadoop fs -mkdir /test
创建test文件夹在hadoop目录下
运行 hadoop fs -put ./word.txt /test
将刚的word文件转移到test目录下
测试一下结果:
在这里插入图片描述
在这里插入图片描述
通过虚拟机的Hadoop端口页面访问均可以看到word文件,验证这一步成功

接下来可以执行wordcount方法进行验证
执行:hadoop jar /opt/module/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test/word.txt /output
集群开始调取资源进行处理,处理完成后
执行:hadoop fs -cat /output/part-r-00000 查看count结果
在这里插入图片描述
可以看到,hello和world都分别出现了一次,验证OK
其实应该弄一个复杂点的文本来测试,失算了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值