1. 虚拟机账号密码
- 账号: root或hadoop ,密码 123456
2. jdk
- jdk下载链接
- jdk-8u411-linux-aarch64.tar.gz
- sudo tar -zxvf jdk-8u181-linux-x64.tar.gz (解压.tar.gz包)
- sudo chmod -R 777 /usr/local/java
2.1 jdk的配置
1.sudo vim ~/.bashrc
2. 具体内容为:#set oracle jdk environment
export JAVA_HOME=/usr/local/java/jdk1.8.0_411 ## 这里要注意目录要换成自己解压的jdk 目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
- source ~/.bashrc (是环境变量生效)
3. hadoop配置
- sudo vim ~/.bashrc
- 内容为:
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.3.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- source ~/.bashrc (是环境变量生效)
- hadoop version 检查是否hadoop生效
4.集群规划
节点名称 | 节点ip | 配置 | 配置 |
---|---|---|---|
hadoop01 | 192.168.31.28 (主) | 8CPU/8G | NameNode、DataNode、ResourceManager,NodeManager |
hadoop02 | 192.168.31.187 (从) | 8CPU/8G | NameNode、DataNode、ResourceManager,NodeManager |
hadoop03 | 192.168.31.222 (从) | 8CPU/8G | NameNode、DataNode、ResourceManager,NodeManager |
5. 网络设置
5.1 虚拟机的网络设置,共有三台虚拟机,配置时保证MAC地址不同即可
5.2 修改hostname 及在hosts中添加对应的节点ip,主机名映射。如下图
5.2.1 hadoop01
5.2.2 hadoop02
5.2.3 hadoop03
5.2.4 相关命令
修改hosts文件,ip与主机名映射关系
sudo vim /etc/hosts
192.168.31.28 hadoop01
192.168.31.187 hadoop02
192.168.31.222 hadoop03
5.2.5 修改对应的hostname
sudo vim /etc/hostname
5.2.6 三个节点,每台节点都需要去更改或添加。然后重启即
5.2.6.1 检查各个节点
- ping hadoop01 -c 3
- ping hadoop03 -c 3
- 三个节点,分别去检查,ping通了即可,如下图
6. 免密设置
6.1 在主节点生成ssh密钥(192.168.31.28 主节点)
6.1.1 scp -r ~/.ssh/id_rsa.pub hadoop@192.168.31.187:/usr/local/hadoop/ (在192.168.31.28的主节点操作,注意空格)
6.1.2 将SSH公钥加入授权中,下图操作命令与截图等 (192.168.31.187(从) 里面操作****)
mkdir ~/.ssh # 如果不存在该文件夹需先创建,若已存在,则忽略本命令
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub
6.1.3 另外一从节点同样操作,192.168.31.222(从)
6.1.4 在hadoop01(主节点也叫master节点) 无密码ssh登录其他节点
ssh hadoop02
ssh hadoop03
7. 配置集群
7.1 集群涉及的配置文件
路径: /usr/local/hadoop/hadoop-3.3.5/etc/hadoop
Site-specific configuration - etc/hadoop/core-site.xml, etc/hadoop/hdfs-site.xml, etc/hadoop/yarn-site.xml and etc/hadoop/mapred-site.xml 共有四个文件,下图是官网的截图,可参考官网的配置等
7.2 具体的配置文件
7.2.1 workers文件修改
7.2.2 core-site.xml 文件修改
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/hadoop-3.3.5/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
</configuration>
7.2.3 hdfs-site.xml 文件修改
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop01:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hadoop-3.3.5/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hadoop-3.3.5/tmp/dfs/data</value>
</property>
</configuration>
7.2.4 mapred-site.xml 文件修改
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop01:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop/hadoop-3.3.5</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop/hadoop-3.3.5</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop/hadoop-3.3.5</value>
</property>
</configuration>
7.2.5 yarn-site.xml 文件修改
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
8. 启动集群等
8.1 格式化节点
hdfs namenode -format
8.2 启动集群命令
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
8.3 检查集群
- hadoopo1(master节点) ,通过jps命令查看
hadoopo2(slave1节点),jps命令如下
hadoopo3(slave2节点),jps命令如下
在hadoop01(master节点上),通过 hdfs dfsadmin -report 命令查看数据节点是否正常启动,如下图
9.执行分布式实例
9.1运行MapReduce作业
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar grep input output 'dfs[a-z.]+'
9.2具体执行可以参考单节点上执行教程,官方教程
9.2.1 在hadoop01上运行
9.2.2 运行结果
- 9.2.2 打印结果