偽分布式就是只有一台機器,既是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 各個模塊都對應不同的日志文件。