搭建hadoop伪分布式环境

时间:2022-05-03 21:13:29

伪分布式就是只有一台机器,既是namenode又是datanode。一台阿里云服务器(centos)即可完成。

Java环境

首先需要安装Java环境,下载jdk的安装包,解压到/usr/java/,然后配置环境变量。

vim /etc/profile

#set java environment
export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=$JAVA_HOEM/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

建立信任关系

ssh-keygen -t rsa  #一路回车

这个命令的作用是生成公钥和私钥,并且在该用户的根目录下生成.ssh目录。-t type rsa是一种加密算法。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

将生成的公钥添加到当前用户的认证文件中,ssh localhost 不需要输入密码则为成功。

安装hadoop

下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/

tar -zvxf hadoop-2.6.5.tar.gz
mv hadoop-2.6.5/ /usr/local/
cd /usr/local/hadoop-2.6.5/

配置hadoop环境变量

#set hadoop environment
export HADOOP_HOME=/usr/local/hadoop-2.6.5
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/sbin:$HADOOP_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

在hadoop中配置Java环境变量,这里不配置会报错。把里面的JAVA_HOME替换成本机真实的jdk路径。

vim ./etc/hadoop/hadoop-env.sh

# export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/java/jdk1.8.0_151

然后是配置hdfs和yarn。配置前先进到hadoop的根目录。

cd /usr/local/hadoop-2.6.5/
vim ./etc/hadoop/core-site.xml
vim ./etc/hadoop/hdfs-site.xml
vim ./etc/hadoop/yarn-site.xml
vim ./etc/hadoop/mapred-site.xml

core-site.xml 配置文件内容如下:

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
<description>NameNode URI</description>
</property>
</configuration>

hdfs-site.xml 配置文件如下:

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>

yarn-site.xml 配置文件如下:

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

mapred-site.xml配置文件如下:

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

配置完成之后输入jps,应该有6个Java进程,缺一不可。

8002 NameNode
15624 Jps
7449 ResourceManager
7546 NodeManager
7306 SecondaryNameNode
8415 DataNode

hadoop启动与关闭

start-dfs.sh        #开启hdfs
start-yarn.sh #开启YARN
start-all.sh #开启所有服务
stop-all.sh #关闭所有服务

遇到的问题

datanode进程起不来问题,就是jps查看进程之后少一个datanode。

rm -rf /usr/local/hadoop/tmp/

这个路径是在前面core-site.xml 配置文件中对应的路径。然后重新启动。

namenode进程起不来。

rm -rf /usr/local/hadoop/tmp/
hadoop namenode -format

重新格式化namenode之后再重新启动。

有问题先去日志文件中看,$HADOOP_HOME/logs 各个模块都对应不同的日志文件。