伪分布式就是只有一台机器,既是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进程起不来。
hadoop namenode -format
rm -rf /usr/local/hadoop/tmp/
重新格式化namenode之后再重新启动。
有问题先去日志文件中看,$HADOOP_HOME/logs 各个模块都对应不同的日志文件。