Hadoop集群安装环境搭建-纯命令行

Hadoop集群安装配置流程

1.在 Master 节点上安装 SSH server、安装 Java 环境
2.在 Master 节点上安装 Hadoop,并完成配置
3.在其他 Slave 节点上安装 SSH server、安装 Java 环境
4.将 Master 节点上的 /usr/local/hadoop 目录复制到其他 Slave 节点上
5.在 Master 节点上开启 Hadoop

Master节点安装SSH server

创建新用户

adduser hadoop

之后会提示输入密码及其他用户信息。用户信息可以直接回车跳过。
useradd命令也可新建用户,但是不好。用adduser创建用户时会自动创建/home下对应的用户文件夹而useradd不会。
修改/etc/sudoers文件,给新用户赋sudo权限。
在这里插入图片描述在root ALL=(ALL:ALL) ALL下一行加上新建用户的信息。如下图
在这里插入图片描述由于SSH命令规则及配置文件/etc/hosts和/usr/local/hadoop/etc/hadoop/workers的规则要求,Master节点和Slave节点的用户名需要相同。解释见后文
切换到新用户下,更新apt安装软件,以避免部分软件无法安装。并安装SSH

sudo apt-get update
sudo apt-get install openssh-server

Master节点安装JAVA环境

sudo apt-get install default-jdk即可直接安装成功(需保持联网,之前尝试了一个指定版本的下载,结果显示资源被覆盖,下载失败。之后采用这个方法成功了)。查看/usr/lib/jvm/会发现下载好的jdk。
java1.8(不含)以上版本默认禁止访问许多javax的API,会导致hadoop启动失败,所以后来重新安装了java1.8。在~/.bashrc文件中配置环境变量。

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_241  
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH  

这里的jdk.1.8.0_241根据安装的jdk版本不同而定。

Master节点安装Hadoop并完成配置

使用wget命令+资源链接下载Hadoop。wget命令默认下载目标资源到当前目录。故先切换到/usr/local目录。

wget https://mirrors.cnnic.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz

有时候找到的镜像链接不可用,就再找其他链接。要注意wget后面接的下载地址需要是完整的文件下载路径(点开网址直接弹出下载文件提示的那种),找到镜像网站记得点进去找到hadoop.tar.gz文件的路径。
解压hadoop(当前位置为/usr/local)。
改名

mv hadoop-3.2.1 hadoop
sudo tar -zxvf hadoop-3.2.1.tar.gz

检验是否下载成功:

/usr/local/hadoop/bin/hadoop version

检验成功后将hadoop的bin加入PATH环境变量

vim ~/.bashrc
export PATH=$PATH:/usr/local/hadoop/bin/:/usr/local/hadoop/sbin/

Slave节点安装SSH server,JAVA环境

操作同Master节点

修改Master和Slave的主机名及IP主机名对应文件。

/etc/hostname文件内存储主机名。Master和Slave节点钟大哥hostname文件内容分别改为Master,Slave(多台Slave则Slave1,Slave2…)。/etc/hosts文件存储集群节点的主机名称与IP地址映射的关系。在所有主机的hosts文件中均添加映射(举例):

192.168.12.1 Master
192.168.12.2 Slave1
192.168.12.3 Slave2

文件原有语句不做删改。保存后使用ping命令检测是否配置成功。如在Master主机使用ping Slave1。如下图格式则成功(图Ping百度)。
在这里插入图片描述
Ctrl+c停止ping命令。

Master节点无密码SSH登陆到Slave节点

首先生成Master节点的公钥(因为改过主机名,所以需要删除原有的再生成一次)。

cd ~/.ssh
rm ./id_rsa*
ssh-keygen -t rsa

让Master节点能无密码SSH到本机。

cat ./id_rsa.pub >> ./authorized_keys

将公钥传输到Slave节点上,加入授权。注:下句的hadoop为Slave2的主机名(各节点主机名应相同)

scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/

SSH标准语句为:ssh 用户名@IP地址,如果目的用户名与当前用户名相同,则可写为ssh IP地址,将用户名省略。hadoop开启时,Master节点会执行无密码SSH访问Slave节点,句式为ssh IP地址,这就要求各节点用户名统一。

配置集群/分布式环境

需要修改/usr/local/hadoop/etc/hadoop/中的五个文件:slaves(hadoop3版本以上为workers),core-site.xml,hdfs-site.sml,mapred-site.xml,yarn-site.xml
slaves:内容为作为Datanode的主机名。一行一个。分布式可保留localhost也可删除。
core-site.xml:配置对象为集群的全局参数。用于定义系统级别的参数。

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Master:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

hdfs-site.xml:配置对象为HDFS。如namenode和datanode的存放位置,文件副本个数,文件读取权限等。其中dfs.namenode.data.dir定义namenode在本地文件系统的位置。dfs.replication是数据需要备份的数量。如果其value大于集群机器数会出错。

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

mapred-site.xml:配置对象为Mapreduce参数,包括Jobhistory Server和应用参数两部分,如reduce任务的默认个数,任务能使用内存的默认上下限等。

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>Master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Master:19888</value>
        </property>
</configuration>

yarn-site.xml:配置对象:集群资源管理系统参数。配置Resourcemanager,Nodemanager的通信端口,web监控端口等。

<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>Master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

Master节点上的/usr/local/hadoop目录复制到其他Slave节点

如果跑过伪分布式,需要先删除之前的临时文件。在Master节点上执行:

cd /usr/local
sudo rm -r hadoop/tmp
sudo rm -r hadoop/logs/*      
tar -zcvf ~/hadoop.master.tar.gz ./hadoop
cd ~
scp ./hadoop.master.tar.gz Slave1:/home/hadoop

在Slave1节点上执行:

sudo rm -rf /usr/local/hadoop #如果存在旧文件
sudo tar -zxvf ~/hadoop.master.tar.gz -C /usr/local #-C参数为解压到指定目录(压缩时为从指定目录压缩),不加则指令无法执行
sudo chown -R hadoop /usr/local/hadoop 

如果还有其他节点,也要从Master传输hadoop包,并解压改权限。

Master节点开启Hadoop

注:使用的是Ubuntu系统
首次启动需要进行Namenode节点格式化
hdfs namenode -format
1之后可以启动hadoop
start-all.sh
mr-jobhistory-daemon.sh start historyserver
通过jps可以看到各个节点启动的进程。Master启动情况如下:
在这里插入图片描述Slave启动情况如下:
在这里插入图片描述有任何进程没有启动则存在错误。
hadoop的hdfs默认存储目录为/user/hadoop 其中hadoop为用户名
所以使用hdfs前一般需要执行操作

hdfs dfs -mkdir -p /user/hadoop

遇到的坑与经验:
1.阿里云服务器采用专用网络,无法绑定公网IP。需要使用ifconfig命令产看内网IP,仅在Master节点的/etc/hosts里仅对Master的IP进行更改。
2.jdk1.8(不含)以上禁止访问许多javax API,会导致Sourcemanager和NodeManager启动失败。最有效的方法是重装jdk1.8,其他方法均有可能不奏效。
3.遇到进程启动不起来的时候,去/usr/local/hadoop/logs/下找到对应的.log文件,查看报错信息,看不懂就去网上查,精准搜索总能解决问题。
有错误欢迎指出

参考链接

Hadoop安装教程_单机/伪分布式
Hadoop集群安装配置
SSH,公钥,私钥的理解
修改core-site配置文件
什么是专有网络

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值