创建需要的文件夹
进入安装包文件夹 mkdir /opt/jdk mkdir /opt/hadoop
安装jdk
解压缩jdk安装包 tar -zxvf jdk-8u144-linux-x64.tar.gz 移动文件夹jdk1.8.0_144到/opt/java下面,并改名为jdk1.8 mv jdk1.8.0_144/ /opt/jdk/jdk1.8 配置jdk的环境变量 vim /etc/profile 在末尾空白行添加如下信息 #Java Config export JAVA_HOME=/opt/jdk/jdk1.8 export JRE_HOME=/opt/jdk/jdk1.8 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export PATH=.:${JAVA_HOME}/bin:$PATH 修改环境变量后都要刷新文件才能生效 source /etc/profile 测试是否配置成功 java -version
编辑
配置环境变量
#Java profile export JAVA_HOME=/opt/jdk/jdk1.8 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib # Hadoop profile export HADOOP_HOME=/opt/hadoop/hadoop2.7 # PATH profile export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
Hadoop2.7.3伪分布式配置
解压文件,并移动解压后的文件重名/opt/hadoop/hadoop2.7
cd /opt/hadoop/hadoop2.7/etc/hadoop/
vim hadoop-env.sh:
export JAVA_HOME=/opt/jdk/jdk1.8
vim core-site.xml:
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/opt/hadoop/hadoop2.7/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> </configuration>
vim hdfs-site.xml:
<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/hadoop/hadoop2.7/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/hadoop/hadoop2.7/tmp/dfs/data</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:50090</value> </property> </configuration>
cd /opt/hadoop/hadoop2.7/ ./bin/hdfs namenode -format
成功的话,会看到 “**successfully formatted” 和 “Exitting with status 0**” 的提示,若为 “**Exitting with status 1**” 则是出错。
启动hdfs /opt/hadoop/hadoop2.7/sbin/start-dfs.sh 查看启动情况 <http://192.168.0.76:50070>
yarn配置
cd /opt/hadoop/hadoop2.7/etc/hadoop/ mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapredue.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>
vim yarn-site.xml:
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration>
启动hdfs /opt/hadoop/hadoop2.7/sbin/start-dfs.sh 启动yarn /opt/hadoop/hadoop2.7/sbin/start-yarn.sh
查看启动情况 <http://192.168.0.76:8088/cluster>
Hadoop安全模式
- Hadoop在NameNode重启的时候就会进入到安全模式,在安全模式中HDFS只支持访问元数据的操作才会返回成功
- 进入安全模式:
hadoop dfsadmin -safemode enter
- 退出安全模式,
hadoop dfsadmin -safemode leave
编辑 - 安全模式下查看hdfs文编辑
在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。SafeModeException 异常
运行Hadoop程序时,有时候会报以下错误:org.apache.hadoop.dfs.SafeModeException: Cannot delete/user/hadoop/input. Name node is in safe mode.
那我们来分析下这个错误,从字面上来理解:“Name node is in safe mode.
”
现在就清楚了,那现在要解决这个问题,我想让Hadoop不处在safe mode 模式下,能不能不用等,直接解决呢?答案是可以的,
只要在Hadoop的目录下输入:$bin/hadoop dfsadmin -safemode leave
也就是关闭Hadoop的安全模式,这样问题就解决了。
用户可以通过dfsadmin -safemode value 来操作安全模式,参数value的说明如下:
enter - 进入安全模式 leave - 强制NameNode离开安全模式 get?? - 返回安全模式是否开启的信息 wait? - 等待,一直到安全模式结束。