这几天在学习给虚拟机装上hadoop,因为这个过程今后可能将会反复使用,所以开一篇博客专门记录一下整个流程,并汇总其中各种可能会发生的小问题,以及我们应该如何规避。
准备阶段
一台虚拟机,装有配置好的 jdk 和 mysql,如果对这两个软件安装和配置还有疑问,可以查看我的博客或者在csdn里搜索名为子清的博主的博客
所需材料:
- hadoop-2.6.0-cdh5.14.2.tar.gz
- hadoop-native-64-2.6.0.tar
如果有需要的小伙伴可以在底下留言!
解压
先解压hadoop-2.6.0-cdh5.14.2.tar.gz到/opt
目录下
然后改名mv hadoop-2.6.0-cdh5.14.2/ hadoop
,方便以后使用
本机配置
- 修改本机名
vi /etc/hostname
,把里面的localhost修改成新的本机名 - 修改
vi /etc/hosts
文件,添加本机IP地址 本机名
- 生成秘钥
ssh-keygen
- 伪分布式复制到自己
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
配置
进入/opt/hadoop/etc/hadoop
目录,我们要在这个目录下配置许多文件
第一步
进入hadoop-env.sh
文件
vi hadoop-env.sh
找到# The java implementation to use.
这一行,添加如下内容
# The java implementation to use.
export JAVA_HOME=/opt/jdk1.8.0_221 <---个人的jdk路径
:x保存退出(以下修改配置文件的操作均视为有这一步骤,除非有特殊说明)
第二步
进入core-site.xml
文件
vi core-site.xml
在<configuration> </configuration>
中添加如下内容:
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.23.52:9000</value> <---本机IP地址
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value> <---hadoop文件路径
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
第三步
进入hdfs-site.xml
文件
vi hdfs-site.xml
在<configuration> </configuration>
中添加如下内容:
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.23.52:50090</value> <---本机IP地址
</property>
第四步
重新命名mv mapred-site.xml.template mapred-site.xml
进入mapred-site.xml
文件
vi mapred-site.xml
在<configuration> </configuration>
中添加如下内容:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.23.52:10020</value> <---本机IP地址
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.23.52:19888</value> <---本机IP地址
</property>
第五步
进入yarn-site.xml
文件
vi yarn-site.xml
在<configuration> </configuration>
中添加如下内容:
<!-- reducer获取数据方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop02</value> <----主机名
</property>
<!-- 日志聚集功能使用 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
第六步
vi ./slaves
把原本的localhost修改成现在的主机名
环境变量配置
vi /etc/profile
添加如下内容:
export HADOOP_HOME=/opt/hadoop <---hadoop文件路径
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
如果已经有$PATH
,则在原来的基础上添加,而不是覆盖
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
# 可以顺便添加一下初始化路径
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
最后修改完成的应如下图所示:
保存退出后别忘记source /etc/profile
格式化
在格式化之前,还有几个重要的步骤
回到/opt/hadoop
目录下,如果有 tmp 和 logs 文件(一般都会有),请先删除
rm -rf tmp/
rm -rf logs/
然后输入jps
,查看是否有除了jps以外的进程,如果有请使用kill
先杀掉
下面正式开始格式化
hadoop namenode -format
启动
在/opt/hadoop/etc/hadoop
目录下,输入start-all.sh
启动
该过程可能会花一段时间
如果想停用,则输入stop-all.sh
可以选择性地启动历史服务mr-jobhistory-daemon.sh start historyserver
访问Hadoop
在浏览器输入本机IP地址:50070
,即可进入HDFS页面
在浏览器输入本机IP地址:8088
,即可进入YARN管理界面
简单测试
让我们用hadoop创建一个文件夹,并往里放入一个txt文本
hadoop fs -mkdir /test <---创建了一个名为test的文件夹,记得在目录名前加/符号
hadoop fs -put README.txt /test/ <---将一篇名为README的txt文件放入了test
如何查看这样的操作是否完成?
进入端口50070的页面,点击右上角Utilities,然后点击Browse the file system
这时候会出现我们的test文件夹
点击test文件夹,就可以发现README已经在里面了
hadoop集群
2020.09.05更新
首先需要准备三台虚拟机(克隆),修改IP地址和主机名,生成新秘钥,添加互信,如果对这一系列的步骤还有疑问,可以去看我的上一篇博客,基本都有提到该如何操作
ELK的安装 配置 集群
这里其实只实现了Linux集群,我们还需要对其他虚拟机的配置进行更改
修改配置文件
进入hdfs-site.xml
文件,修改后的内容如下
<property>
<name>dfs.replication</name>
<value>3</value> <---这里的数字修改为对应集群内的虚拟机数量
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.23.53:50090</value> <---新虚拟机的本机IP地址
</property>
进入mapred-site.xml
文件,修改后的内容如下
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.23.54:10020</value> <---我们将这个jobhistory服务放在另一台虚拟机(非主节点)上,分担压力
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.23.54:19888</value> <---注意上下一致
</property>
进入slaves
文件
将集群内所有的主机名都添加进来
以上步骤需要在所有集群内的虚拟机上同步完成,可以使用Moba的功能分屏MultiExec;也可以在一台虚拟机上完成好所有的xml配置,再使用scp命令将文件发送到其他虚拟机上,scp命令如何使用可以查看我的博文Linux常用命令。
总结
配置hadoop的环节步骤很多,也很容易出错,需要大家小心谨慎,多加练习也可以减少以后犯错的概率。
如果你读完这篇博文仍然有没有解决的疑问,欢迎在评论区留言,一起共同讨论!
希望这篇博文能帮助到你!