首先要说明一点,一下教程针对hadoop3.1.0,注意不是2.X.X!!!(本人因为版本浪费了将近三天的时间,人生观都差点崩塌了)
虚拟机这里就不过多说了,网上教程一大把,这里使用的是ubuntu系统
1、三台虚拟机启动后修改hostname
使用一下命令 sudo gedit /etc/hostname,将三台虚拟机的分别修改为master,slave1,slave2(master,node1,node2)均可自己分得清就成
修改完之后重启虚拟机,下面是修改后的效果
2、修改hosts,将三台虚拟机的ip写入
首先输入ifconfig命令,依次查看三台虚拟机的IP地址
然后 依次在三台虚拟机的命令行中输入sudo vim /etc/hosts,修改内容如图所示:
完成修改后,用下面的命令测试三台虚拟机是否可以相互ping通。
3、建立hadoop账号
为hadoop集群专门设置一个用户组及用户,命令如下
添加一个属于hadoop用户组的had_user用户,命令如下:
设置用户had_user的登录密码,命令如下:
切换到had_user用户,之后的操作都是在该用户下进行,命令如下:
上述设置需要在3台虚拟机里面都同样进行。
4、 SSH无密码验证配置
安装SSH,命令如下:
生成公钥、私钥,命令如下:
提示输入密钥保存的路径,直接按enter键使用默认值即可,如下图:
把id_rsa.pub追加到授权的key里面去,命令如下:
测试是否可以用ssh无密码登录本地localhost,命令如下:
在另外两个节点虚拟机重复以上步骤。
5、jdk、hadoop安装
在had_user用户的根目录下创建文件夹local,jdk和hadoop都安装在这个文件夹下,命令如下:
将下载好的jdk和hadoop安装包复制到local文件夹下并解压,命令如下:
完成后,查看local目录,如图所示:
安装完之后配置jdk与hadoop的环境变量修改profile文件
输入 sudo gedit /etc/profile
配置jdk
export JAVA_HOME=/usr/local/jdk1.8.0_181
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre
PATH=$JAVA_HOME/bin:$PATH
配置hadoop
export HADOOP_HOME=/usr/local/hadoop-3.1.0 PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
修改完之后 使用 source /etc/profile 使修改的环境变量生效。
6、配置hadoop文件-----------首先切到/hadoop3.1.0/etc/hadoop下,然后使用sudo gedit XXXX来编辑这几个文件
1 配置hadoop-env.sh
添加export JAVA_HOME=/opt/java/jdk1.8.0_172/
2 配置core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://servera:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
3 配置hdfs-site.xml
<configuration>
<!-- Configurations for NameNode: -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/var/lib/hadoop/hdfs/name/</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>268435456</value>
</property>
<property>
<name>dfs.namenode.handler.count </name>
<value>100</value>
</property>
<!-- Configurations for DataNode: -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/var/lib/hadoop/hdfs/data/</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
4 配置yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>servera</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.resource.memorymb</name>
<value>800</value>
</property>
<!-- Configurations for History Server (Needs to be moved elsewhere): -->
</configuration>
5 配置mapred-site.xml
<configuration>
<!-- 通知框架MR使用YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>
/opt/hadoop/hadoop-3.1.0/etc/hadoop,
/opt/hadoop/hadoop-3.1.0/share/hadoop/common/*,
/opt/hadoop/hadoop-3.1.0/share/hadoop/common/lib/*,
/opt/hadoop/hadoop-3.1.0/share/hadoop/hdfs/*,
/opt/hadoop/hadoop-3.1.0/share/hadoop/hdfs/lib/*,
/opt/hadoop/hadoop-3.1.0/share/hadoop/mapreduce/*,
/opt/hadoop/hadoop-3.1.0/share/hadoop/mapreduce/lib/*,
/opt/hadoop/hadoop-3.1.0/share/hadoop/yarn/*,
/opt/hadoop/hadoop-3.1.0/share/hadoop/yarn/lib/*
</value>
</property>
</configuration>
6 配置workers
slave1
slave2