17、安装jdk
1.三台虚拟机查看自带openjdk,命令如下:
rpm -qa | grep java |
2. 三台虚拟机卸载系统自带的openjdk:
rpm -e --nodeps tzdata-java-2016j-1.el6.noarch rpm -e --nodeps java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64 rpm -e --nodeps java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 |
注意需要与前面搜索出来的版本一致才能删除。
3. 三台虚拟机上传jdk并解压然后配置环境变量
1) 三台虚拟机在/(根目录)新建两个路径(通过交互窗口执行):
所有软件的安装路径
mkdir -p /export/servers |
所有软件压缩包的存放路径
mkdir -p /export/softwares |
2) 三台虚拟机通过命令行安装一个lrzsz软件(用于通过命令行上传文件)(可能要执行两次)
yum -y install lrzsz |
执行第一次的效果与执行第二次的效果是不一样的
三台虚拟机分别输入命令行, 然后选中需要上传的linux版本的jdk(最后把jdk放在window桌面):
rz -E |
这时候,可能上传的文件在主目录,需要把他剪切到/export/softwares/目录:
三台虚拟机同时执行
mv jdk-8u141-linux-x64.tar.gz /export/softwares/ |
在hadoop101虚拟机上,把/export/softwares路径下的jdk解压到/export/servers/目录去:
cd /export/softwares/ tar -zxvf jdk-8u141-linux-x64.tar.gz -C ../servers/ |
执行完后能在能在/export/servers/目录看到解压后的jdk
3) scp命令拷贝jdk到hadoop102和hadoop103虚拟机(在hadoop101虚拟机上执行):
scp -r /export/servers/jdk1.8.0_141/ hadoop102:/export/servers/ scp -r /export/servers/jdk1.8.0_141/ hadoop103:/export/servers/ |
在hadoop102和hadoop103的/export/servers/目录都能看到拷贝后的jdk:
4) 三台虚拟机都需要配置jdk环境变量和关闭邮箱提醒功能(以hadoop101为例):
配置环境变量命令:
vim /etc/profile |
去到最后输入:
export JAVA_HOME=/export/servers/jdk1.8.0_141 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH |
修改完成之后记得执行: source /etc/profile让环境变量配置生效,并检验jdk配置是否生效:
java -version |
可以关闭邮箱提醒功能(输入命令行回车,没有回应,就是最后的结果):
vim /etc/profile |
输入这样一句:
unset MAILCHECK |
修改完成之后记得 source /etc/profile让配置生效生效,以后就不会有以下多余的提示;
5) 三台虚拟机拍摄快照:
18、配置hadoop集群
集群部署规划:
虚拟机 | hadoop101 | hadoop102 | hadoop103 |
虚拟机的名字 | hadoop101 | hadoop102 | hadoop103 |
HDFS | NameNode SecondaryNameNode DataNode | DataNode | DataNode |
YARN | ResourceManager NodeManager | NodeManager | NodeManager |
以下操作先在hadoop101上进行。
1. 上传并解压
1) 上传压缩包到/export/software目录:
cd /export/softwares |
2) 通过命令行上传:
rz -E |
3) 选择需要上传的hadoop安装包(最好把安装包放在window的桌面):
4) 解压安装:
tar -xzvf hadoop-3.1.2.tar.gz -C ../servers |
2. 修改配置文件
配置文件的位置在 /export/servers/hadoop-3.1.2/etc/hadoop
1) 安装notepad++并安装notepad++插件
将NppFTP文件夹拷贝到notepad++的安装目录下面的plugins文件夹下面,然后重新启动notepad++即可
Notepad++中,先打开菜单“插件”——“Plugins Admin…”
勾上NppFTP,并点击Install按钮。
Notepad++将暂时退出,安装成功后会重启Notepad++。
重启后显示通过菜单“插件”——NppFTP——Show NppFTP Window。显示右边的窗口。
2) 连接Linux机器。
点击齿轮按钮——选择Profile settings
3) 修改配置文件,先在nodepad++打开这6个配置文件(都在/export/server/hadoop-3.1.2/etc/hadoop目录下):
core-site.xml
hadoop-env.sh
hdfs-site.xml
mapred-site.xml
yarn-site.xml
workers
1. core-site.xml修改如下:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop101:8020</value> </property> <!-- 临时文件存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/export/servers/hadoop-3.1.2/datas/tmp</value> </property> <!-- 缓冲区大小,实际工作中根据服务器性能动态调整 --> <property> <name>io.file.buffer.size</name> <value>8192</value> </property> <!-- 开启hdfs的垃圾桶机制,删除掉的数据可以从垃圾桶中回收,单位分钟 --> <property> <name>fs.trash.interval</name> <value>10080</value> </property> </configuration> |
2. hadoop-env.sh配置文件最后添加如下内容
export JAVA_HOME=/export/servers/jdk1.8.0_141/ export HDFS_NAMENODE_USER="root" export HDFS_DATANODE_USER="root" export HDFS_SECONDARYNAMENODE_USER="root" export YARN_RESOURCEMANAGER_USER="root" export YARN_NODEMANAGER_USER="root" |
3. hdfs-site.xml修改如下:
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:///export/servers/hadoop-3.1.2/datas/namenode/namenodedatas</value> </property> <property> <name>dfs.blocksize</name> <value>134217728</value> </property> <property> <name>dfs.namenode.handler.count</name> <value>10</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///export/servers/hadoop-3.1.2/datas/datanode/datanodeDatas</value> </property> <property> <name>dfs.namenode.http-address</name> <value>hadoop101:50070</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.namenode.checkpoint.edits.dir</name> <value>file:///export/servers/hadoop-3.1.2/datas/dfs/nn/snn/edits</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop101.hadoop.com:50090</value> </property> <property> <name>dfs.namenode.edits.dir</name> <value>file:///export/servers/hadoop-3.1.2/datas/dfs/nn/edits</value> </property> <property> <name>dfs.namenode.checkpoint.dir</name> <value>file:///export/servers/hadoop-3.1.2/datas/dfs/snn/name</value> </property> </configuration> |
4. mapred-site.xml修改如下:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.map.memory.mb</name> <value>1024</value> </property> <property> <name>mapreduce.map.java.opts</name> <value>-Xmx512M</value> </property> <property> <name>mapreduce.reduce.memory.mb</name> <value>1024</value> </property> <property> <name>mapreduce.reduce.java.opts</name> <value>-Xmx512M</value> </property> <property> <name>mapreduce.task.io.sort.mb</name> <value>256</value> </property> <property> <name>mapreduce.task.io.sort.factor</name> <value>100</value> </property> <property> <name>mapreduce.reduce.shuffle.parallelcopies</name> <value>25</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop101.hadoop.com:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop101.hadoop.com:19888</value> </property> <property> <name>mapreduce.jobhistory.intermediate-done-dir</name> <value>/export/servers/hadoop-3.1.2/datas/jobhsitory/intermediateDoneDatas</value> </property> <property> <name>mapreduce.jobhistory.done-dir</name> <value>/export/servers/hadoop-3.1.2/datas/jobhsitory/DoneDatas</value> </property> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=/export/servers/hadoop-3.1.2</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=/export/servers/hadoop-3.1.2/</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=/export/servers/hadoop-3.1.2</value> </property> </configuration> |
5. yarn-site.xml修改如下:
<configuration> <property> <name>dfs.namenode.handler.count</name> <value>100</value> </property> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>hadoop101:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>hadoop101:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>hadoop101:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>hadoop101:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>hadoop101:8088</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop101</value> </property> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>1024</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>2048</value> </property> <property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>2.1</value> </property> <!-- 设置不检查虚拟内存的值,不然内存不够会报错 --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>1024</value> </property> <property> <name>yarn.nodemanager.resource.detect-hardware-capabilities</name> <value>true</value> </property> <property> <name>yarn.nodemanager.local-dirs</name> <value>file:///export/servers/hadoop-3.1.2/datas/nodemanager/nodemanagerDatas</value> </property> <property> <name>yarn.nodemanager.log-dirs</name> <value>file:///export/servers/hadoop-3.1.2/datas/nodemanager/nodemanagerLogs</value> </property> <property> <name>yarn.nodemanager.log.retain-seconds</name> <value>10800</value> </property> <property> <name>yarn.nodemanager.remote-app-log-dir</name> <value>/export/servers/hadoop-3.1.2/datas/remoteAppLog/remoteAppLogs</value> </property> <property> <name>yarn.nodemanager.remote-app-log-dir-suffix</name> <value>logs</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>18144000</value> </property> <property> <name>yarn.log-aggregation.retain-check-interval-seconds</name> <value>86400</value> </property> <!-- yarn上面运行一个任务,最少需要1.5G内存,虚拟机没有这么大的内存就调小这个值,不然会报错 --> <property> <name>yarn.app.mapreduce.am.resource.mb</name> <value>1024</value> </property> </configuration> |
6.workers修改如下(把localhost删掉):
hadoop101 hadoop102 hadoop103 |
3. 在第一台机器创建数据和临时文件夹
执行如下指令:
mkdir -p /export/servers/hadoop-3.1.2/datas/tmp mkdir -p /export/servers/hadoop-3.1.2/datas/dfs/nn/snn/edits mkdir -p /export/servers/hadoop-3.1.2/datas/namenode/namenodedatas mkdir -p /export/servers/hadoop-3.1.2/datas/datanode/datanodeDatas mkdir -p /export/servers/hadoop-3.1.2/datas/dfs/nn/edits mkdir -p /export/servers/hadoop-3.1.2/datas/dfs/snn/name mkdir -p /export/servers/hadoop-3.1.2/datas/jobhsitory/intermediateDoneDatas mkdir -p /export/servers/hadoop-3.1.2/datas/jobhsitory/DoneDatas mkdir -p /export/servers/hadoop-3.1.2/datas/nodemanager/nodemanagerDatas mkdir -p /export/servers/hadoop-3.1.2/datas/nodemanager/nodemanagerLogs mkdir -p /export/servers/hadoop-3.1.2/datas/remoteAppLog/remoteAppLogs mkdir -p /export/servers/hadoop-3.1.2/logs |
4. 分发安装包
把hadoop101虚拟机的配置好的hadoop软件拷贝到hadoop102和hadoop103虚拟机,执行如下指令:
cd /export/servers scp -r hadoop-3.1.2/ hadoop102:$PWD scp -r hadoop-3.1.2/ hadoop103:$PWD |
5. 在每台虚拟机都要配置hadoop环境变量:
执行以下指令:
vim /etc/profile |
进入编辑模式:i
在最后面输入:
export HADOOP_HOME=/export/servers/hadoop-3.1.2/ export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR" export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH |
保存退出::wq
让配置文件生效:
source /etc/profile |
6. 格式化HDFS(在hadoop101虚拟机执行即可)
为什么要格式化HDFS?
因为HDFS(hadoop里面的重要组件)需要一个格式化的过程来创建存放元数据(image, editlog)的目录。
1) 先要进入hadoop的主目录,执行以下命令:
cd /export/servers/hadoop-3.1.2/ # 需要先进入这个目录再执行format |
2) 执行格式化命令:
bin/hdfs namenode -format |
并输入y命令
注意:在非第一次格式化时,要先确保Hadoop进程已经关掉(stop-dfs),再删掉datas文件夹和logs文件夹,然后再格式化
7. 启动集群
执行以下指令:
/export/servers/hadoop-3.1.2/sbin/start-dfs.sh # 这里可以通过jps查看是否有namenode和datanode |
可以在三台机器上分别执行jps命令,看是否找到datanode
如果找不到datanode,可参考后面的解决方法。
此时便可以通过如下URL访问Hadoop了
HDFS分布式文件系统访问地址: http://192.168.110.101:50070/dfshealth.html#tab-overview
需要确保Live Nodes为3说明有3个节点是活的。
启动yarn
/export/servers/hadoop-3.1.2/sbin/start-yarn.sh |
可以在三台机器上分别执行jps命令,看是否找到datanode
此时便可以通过如下URL访问Hadoop了
Yarn 分布式计算系统访问地址: http://192.168.110.101:8088/cluster
启动mapred
mapred --daemon start historyserver |
三台虚拟机拍摄快照:
关闭所有服务,指令如下:
/export/servers/hadoop-3.1.2/sbin/stop-all.sh |
mapred --daemon stop historyserver |