单机搭建 Hadoop3 环境为CentOS7/JDK1.8
软件准备
CentOS 7:https://www.centos.org/download/
JDK1.8:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Hadoop3:https://hadoop.apache.org/releases.html
环境配置
步骤一:用vmware安装centos 7
1.配置网路环境
关闭防火墙:
systemctl stop firewalld.service
开启ip地址分配:
vi /etc/sysconfig/network-scripts/
把 ONBOOT=no 改为 ONBOOT=yes
2.配置SSH无密码登陆
cd ~/.ssh/ #若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa #会有提示,都按回车就可以
cat id_rsa.pub >> authorized_keys #加入授权
chmod 600 ./authorized_keys #修改文件权限
步骤二:解压jdk1.8
1.配置jdk环境
##初始化
tar -vzxf jdk-8u151-linux-x64.tar.gz #解压
mv jdk-8u151 jdk8 #改名为jdk8
mkdir /usr/java #手动创建
mv /root/jdk8 /usr/java #将jdk移动到这个文件
##java环境
vi /etc/profile
插入下列4行
export JAVA_HOME=/usr/java/jdk8
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
保存退出后执行命令生效:
source /etc/profile
测试:
java -version #检测是否成功,有版本信息提示的效果,证明成功了
步骤三:解压hadoop3
1.配置hadoop3环境
##初始化
tar -vzxf hadoop-3.2.0-linux-x64.tar.gz #解压
mv hadoop-3.2.0 hadoop3 #改名为hadoop3
mkdir /usr/hadoop #手动创建
mv /root/hadoop3 /usr/hadoop #将jdk移动到这个文件
##hadoop的环境
vi /etc/profile
插入下列8行
export HADOOP_HOME=/usr/hadoop/hadoop3
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
保存退出后执行命令生效:
source /etc/profile
测试:
hadoop version #检测是否成功,有版本信息提示的效果,证明成功了
步骤四:hadoop3(DFS)配置(下面的配置都在hadoop3这个目录下面,省略了/usr/hadoop路径)
在/usr/hadoop下创建文件夹
mkdir /usr/hadoop/tmp
mkdir -p /usr/hadoop/tmpdfs/name
mkdir -p /usr/hadoop/tmpdfs/data
1.先修改** core-site.xml **文件,
vi /usr/hadoop/hadoop3/etc/hadoop/core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
<description>Abase for other temporary directories. </description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
2.再修改** hdfs-site.xml **文件
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/hadoop/tmp/dfs/data</value>
</property>
</configuration>
配置好之后,执行一下,格式化命令
./bin/hdfs namenode -format
然后执行一下namenode和datanode的守护进程
./sbin/start-dfs.sh
成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。
问题解决
1.报错
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
@1:因为是root账户,需要配置以下几点(这里配置两种模式DFS和YARN)
在start-dfs.sh,stop-dfs.sh中:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
在start-yarn.sh,stop-yarn.sh中
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
2.警告
HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.
@2: 解决方案,在 vi sbin/start-dfs.sh 和 vi sbin/stop-dfs.sh
将
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
改成
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
3.报错
ERROR: JAVA_HOME is not set and could not be found.
@3:解决方案,在 vi etc/hadoop/hadoop-env.sh 中加入
export JAVA_HOME=/usr/java/jdk8
4.警告
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
@4:解决方案,没有native仓库位置,需要配置环境
在/etc/profile中,添加下面配置:
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_HOME=/usr/hadoop/hadoop3
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
最后记得使配置生效:source /etc/profile
并把相同配置添加到hadoop-env.sh文件末尾。
访问hadoop Web
访问地址:http://localhost:50070
启动后 localhost:50070 不出现web界面,则通过以下方式检测:
centos 7 没有netstat命令,需要手动安装执行
yum install net-tools
执行 netstat -ant
如 50070 没启动,尝试修改配置文件:
在 mapred-site.xml 文件添加以下:(/usr/hadoop/hadoop3/etc/hadoop)
<property>
<name>mapred.job.tracker.http.address</name>
<value>主机的IP:50030</value>
</property>
<property>
<name>mapred.task.tracker.http.address</name>
<value>主机的IP:50060</value>
</property>
在hdfs-site.xml文件添加以下:
<property>
<name>dfs.http.address</name>
<value>0.0.0.0:50070</value>
</property>
重启hadoop,即可成功打开web界面。
YARN模式配置
mapred-site.xml 文件添加以下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml 文件添加以下:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
然后执行:
./sbin/start-yarn.sh
开yarn好处:
启动 YARN 之后,运行实例的方法还是一样的,仅仅是资源管理方式、任务调度不同。观察日志信息可以发现,不启用 YARN 时,是 “mapred.LocalJobRunner” 在跑任务。启用 YARN 之后,“mapred.YARNRunner” 在跑任务。启动 YARN 有个好处是可以通过 Web 界面查看任务的运行情况: