1 安装Hadoop
1.1查看java环境
java -version
若未安装,请看Ubuntu安装jdk(图文)-CSDN博客
1.2下载
1.3解压
cd ~/Downloads
ll
sudo tar -zxvf hadoop-3.1.3.tar.gz -C /usr/local
1.4重命名
cd /usr/local
ll
sudo mv hadoop-3.1.3 hadoop313
1.5修改环境变量配置
进入配置文件:
sudo vim ~/.bashrc
添加如下配置信息:
export HADOOP_HOME=/usr/local/hadoop313 export PATH=${JAVA_HOME}/bin:$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
让配置文件生效:
source ~/.bashrc
1.6验证是否安装成功
hadoop version
出现Hadoop的版本信息就代表安装成功了
2 SSH实现免密远程登录
安装ssh:
sudo apt-get install openssh-server
生成密钥对、授权并修改文件权限
ssh-keygen -t rsa
冒号处按下enter键即可(连续按三次)
授权:
cd ~/.ssh/
cat id_rsa.pub >> authorized_keys
修改文件权限:
chmod 600 ./authorized_keys
进行远程登录,发现不用密码,输入exit即可退出远程
3Hadoop部署模式
3.1单机模式
完成上述步骤后便完成了单机模式的部署,可直接验证:
cd /usr/local/hadoop313
mkdir ./input
cp ./etc/hadoop/.xml ./input
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/*
执行成功后如下图,输出了相关信息,且单词 dfsadmin 出现了1次
若重复执行需要先将 ./output
删除:
rm -r ./output
3.2伪分布式
3.2.1配置core-site.xml
cd /usr/local/hadoop313/etc/hadoop
sudo vim core-site.xml
添加以下配置信息:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop313/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://movie:9000</value>
</property>
</configuration>
- hadoop.tmp.dir:Hadoop的临时目录,用于存储临时文件。
- fs.defaultFS:HDFS的NameNode地址,用于指定Hadoop文件系统的默认名称节点。
3.2.2配置hdfs-site.xml
sudo vim hdfs-site.xml
添加以下配置信息:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>movie:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>movie:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop313/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop313/tmp/dfs/data</value>
</property>
</configuration>
- dfs.replication:设置HDFS中的副本数量,默认为3。
- dfs.namenode.http-address:NameNode的HTTP地址,用于客户端与NameNode进行通信。
- dfs.namenode.secondary.http-address:Secondary NameNode的HTTP地址,用于在主NameNode发生故障时接管其职责。
- dfs.namenode.name.dir:设置NameNode的数据存储目录。
- dfs.datanode.name.dir:设置DataNode的数据存储目录。
3.2.3配置hadoop-env.sh文件
sudo vim hadoop-env.sh
添加以下配置信息:
export JAVA_HOME=/usr/local/jdk18
完成以上配置后,执行 NameNode 的格式化:
hdfs namenode -format
启动集群:
start-dfs.sh
验证:jps命令查看,有NameNode、SecondaryNameNode、DataNode三个进程
jps
在web中查看
输入movie:9870
关闭集群:
stop-dfs.sh
3.3完全分布式
集群规划:
主节点(movie) | 从节点(movie1) | |
HDFS | DataNode NameNode SecondaryNameNode | DataNode |
YARN | NodeManager | ResourceManager NodeManager |
在主节点虚拟机先安装配置好后克隆出另一台(可根据实际情况配置多台从节点虚拟机)
进入/usr/local/hadoop313/etc/hadoop完成下面几个文件的配置:
core-site.xml、hdfs-site.xml、mapred-site.xml、 yarn-site.xml
配置core-site.xml:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop313/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://movie:9000</value>
</property>
</configuration>
配置hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>movie:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>movie:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop313/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop313/tmp/dfs/data</value>
</property>
</configuration>
配置mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>movie:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>movie:19888</value>
</property>
</configuration>
- mapreduce.framework.name:设置MapReduce框架的名称,默认为local,表示在本地运行;设置为yarn表示使用YARN作为资源管理器。
- mapreduce.jobhistory.address:设置MapReduce作业历史记录服务(JobHistory)的地址,用于存储和管理已完成的MapReduce作业的信息。
- mapreduce.jobhistory.webapp.address:设置MapReduce作业历史记录服务的Web应用程序的地址,用于通过Web界面查看和管理已完成的作业信息。
配置yarn-site.xml:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>movie1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
yarn.resourcemanager.hostname:设置YARN资源管理器(ResourceManager)的主机名或IP地址。
yarn.nodemanager.aux-services:设置YARN节点管理器(NodeManager)提供的辅助服务。节点管理器将提供MapReduce的Shuffle服务。
工具安装
sudo apt install net-tools
查看本机ip地址:
ifconfig
如我的IP地址为:192.168.200.128
修改映射关系:
sudo vim /etc/hosts
如图我使用的两个节点名称与对应的 IP 关系如下:
192.168.200.128 movie
192.168.200.129 movie1
克隆出另一台虚拟机movie1
关闭虚拟机---右击虚拟机---管理---克隆
选择创建完整克隆
命名虚拟机并更改存储位置
打开克隆的虚拟机
修改主机名为movie1:
sudo vim /etc/hostname
修改IP地址:
点击setting---network---设置
本机中IP恰好与上述映射关系中的ip地址相同便不做修改,若不同可按如下步骤进行修改:
选择IPV4---修改IP地址(Address)为192.168.200.129---修改子网掩码(Network)为255.255.255.0---修改网关(Gateway)为192.168.200.1---点击Apply应用生效
192.168.200.129对应的网关为192.168.200.1,即网关与IP地址前三位一致,最后一位为1
回到主节点虚拟机
如果是完全分布式的多台虚拟机之间的配置,参照2 SSH实现免密远程登录,只要把主节点的id_rsa.pub追加到需要免密登录的虚拟机的authorized_keys中。
将公钥拷贝到要免密登录的目标机器上:
cd ~/.ssh
ssh-copy-id movie1
远程发现可以登录到从节点虚拟机
在主节点上就可以无密码 SSH 到各个从节点了
启动集群:
start-all.sh
验证每台虚拟机上面的进程数:
通过命令 jps
查看各个节点所启动的进程
在主节点(movie)上可以看到 NameNode、SecondaryNameNode、DataNode、NodeManager进程,如下图所示:
在从节点(movie1)可以看到DataNode、ResourceManager、NodeManager 进程,如下图所示: