引言
这玩意是去年Linux考核内容,来来回回搭建了二三十次,但是都是参照别人的教程来的,而且全都装了图形界面,所以决定根据自己的经验写一篇记录一下,之前搭建的都是Hadoop-2.6.0和2.7.4,这次想搭建最新的3.3.0
关于两者的差距,可以参考下下面的文章
思考了一下步骤:
- 虚拟机建立和克隆
- 修改主机名,明确IP
- 关闭防火墙
- 设置ssh免密码登陆
修改Hadoop的几个组件的配置文件
- 比较重要的JDK路径添加
- 启动Hadoop
搭建方式
Hadoop有三种搭建形式:
- 单机模式:一台主机进行安装
伪分布式模式:一台主机,但用不同Java节点模仿分布式运行的各类节点。
- 从分布式存储的角度来说,集群中的结点由一个NameNode和若干个DataNode组成,另有一个SecondaryNameNode作为NameNode的备份。
- 从分布式应用的角度来说,集群中的结点由一个JobTracker和若干个TaskTracker组成,JobTracker负责任务的调度,TaskTracker负责并行执行任务。TaskTracker必须运行在DataNode上,这样便于数据的本地计算。JobTracker和NameNode则无须在同一台机器上。一个机器上,既当namenode,又当datanode,或者说 既 是jobtracker,又是tasktracker。没有所谓的在多台机器上进行真正的分布式计算,故称为"伪分布式"。开启多个进程模拟完全分布式,但是并没有真正提高程序执行的效率
- 完全分布式模式:真正的分布式,由3个及以上的实体机或者虚拟机组建的机群
本文是利用虚拟机来进行完全分布式搭建
提前准备
cnetos/ubuntu系统,我使用centos进行搭建。可以去镜像站下载
准备好Hadoop安装文件,可以直接去官网下载。这里我下载的是最近版本3.3.0
关于系统安装不在此赘述,不过在centos安装环境选择时候,建议将必要文件勾选
安装
通过ftp文件将Hadoop传入
tar xvf hadoop-3.3.0.tar #对文件解压
rm -rf hadoop-3.3.0.tar #将压缩文件删除
mv hadoop-3.3.0/ hadoop #重命名
修改主机名
三台主机,依次修改主机名为masternode1node2
hostnamectl set-hostname master #centos中修改主机名的指令
reboot #修改后重新启动即可查看到修改后的主机名
Ubuntu的修改主机可以$ vi /etc/sysconfig/network
关闭防火墙
关闭防火墙,并重启网卡
systemctl status firewalld.service #status查看状态
systemctl stop firewalld.service #关闭防火墙
systemctl disable firewalld.service #将防火墙设为不可用
systemctl restart network #重启网卡
再次查看status
显示为不可用状态
设置主机IP映射
vim /etc/hosts #修改host文件
- 添加后三行
将hosts文件拷贝到node1与node2
scp -r /etc/hosts node1:/etc/hosts
scp -r /etc/hosts node2:/etc/hosts
设置免密码登陆
ssh-keygen -t rsa
输入后一直回车
将密钥拷贝到node1、node2
ssh-copy-id -i node1
ssh-copy-id -i node2
实现免密码登陆到字节点
设置本地免密码
cd /root/.ssh/
cat ./id_rsa.pub >> ./authorized_keys #将公钥写入本地执行命令
ll #查看写入结果
修改配置文件
添加JAVA路径
which java
ls -lrt /usr/bin/java
ls -lrt /etc/alternatives/java
得到
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.221-2.6.18.1.el7.x86_64/jre/bin/
为java执行路径,将路径添加到hadoop-env.sh文件中
vim hadoop-env.sh
修改core-site.xml
将下面的配置参数加入进去修改成对应自己的
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/tmp</value>
</property>
</configuration>
修改 hdfs-site.xml 将dfs.replication设置为1
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///${hadoop.tmp.dir}/dfs/nn</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>268435456</value>
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
修改文件yarn-site.xml
<configuration>
<property>
<name>yarn.acl.enable</name>
<value>true</value>
</property>
<property>
<name>yarn.admin.acl</name>
<value>Admin ACL</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
修改 mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
启动
将hadoop文件夹同步给node1/2
scp -r /root/hadoop node1:/root/
scp -r /root/hadoop node2:/root/
cd /root/hadoop
./bin/hdfs namenode -format
./sbin/start-all.sh # 启动脚本
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [master]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
百度得知解决方案:
在Hadoop安装目录下找到sbin文件夹
在里面修改四个文件
对于start-dfs.sh和stop-dfs.sh文件,添加下列参数:
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
对于start-yarn.sh和stop-yarn.sh文件,添加下列参数:
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
在搭建这个的过程中思考到了一个问题,并不是版本越新越好,而是要选择相对稳定的版本。
启动
./bin/hdfs namenode -format
./sbin/start-all.sh. # 启动所有
然后就可以在浏览器输入localhost:9870
这里和2.x不同,2.x启动端口号是50070
可以看见界面还是蛮炫酷的
显示两个节点,证明搭建成功
4 条评论
tql大佬
大佬太强了
|´・ω・)ノ
大佬太强了