本文搭建hadoop的偽分布式的參考網(wǎng)址是http://dblab.xmu.edu.cn/blog/install-hadoop-in-centos/,不過(guò)搭建過(guò)程中仍然碰到些錯(cuò)誤齿椅,這里記錄一下詳細(xì)過(guò)程及錯(cuò)誤的解決方式琉挖。
環(huán)境準(zhǔn)備
jdk版本:1.8.0_171
hadoop版本:2.7.6
安裝環(huán)境選擇版本的時(shí)候,注意查下hadoop與jdk的版本兼容情況
步驟一: 創(chuàng)建用戶
以root用戶登錄系統(tǒng)涣脚,創(chuàng)建hadoop用戶示辈,并以bash作為shell
useradd -m hadoop -s /bin/bash
修改hadoop密碼為hadoop
passwd hadoop
為hadoop用戶增加管理員權(quán)限
visudo
找到 root ALL=(ALL) ALL 這行,在下面添加hadoop ALL=(ALL) ALL遣蚀,如下圖
保存退出矾麻,然后運(yùn)行su hadoop命令切換到hadoop用戶
步驟二 配置ssh免密登錄
檢查是否安裝了 SSH client、SSH server
rpm -qa | grep ssh
如果沒(méi)有安裝妙同,則要進(jìn)行安裝
sudo yum install openssh-clients
sudo yum install openssh-server
安裝完成后射富,運(yùn)行如下命令配置ssh免密登錄
ssh-keygen -t rsa #會(huì)有提示,都按回車(chē)就可以
cat id_rsa.pub >> authorized_keys #加入授權(quán)
chmod 600 ./authorized_keys #修改文件權(quán)限
ssh localhost -p 22199 #測(cè)試是否可以免密登錄 ssh localhost 默認(rèn)連接22端口粥帚,如果不是22 端口胰耗,則需要指定 -p參數(shù)
步驟三:安裝java環(huán)境
java可以直接下載centos版本的包文件,解壓然后配置環(huán)境變量即可芒涡,這里不再向詳細(xì)記錄柴灯。安裝配置完成后,輸入java -version來(lái)檢查是否安裝成功
步驟四 :配置host文件
vi /etc/hosts
#這里我保留的配置為费尽,其中master配置的是騰訊云的內(nèi)網(wǎng)赠群, 如果配置外網(wǎng)會(huì)導(dǎo)致eclipse客戶端連不上hadoop
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
172.16.0.3 master
127.0.0.1 localhost
修改主機(jī)名為master
vi /etc/sysconfig/network
#修改HOSTNAME為master
HOSTNAME=master
修改保存后,重啟電腦旱幼,shutdown -r now
步驟五:安裝hadoop
下載hadoop2.7.6版本解壓值/usr/local目錄下
sudo tar -zxxf -C /usr/local
cd /usr/local/
sudo mv ./hadoop-2.6.0/ ./hadoop
sudo chown -R hadoop:hadoop ./hadoop
cd /usr/local/hadoop
./bin/hadoop version
配置環(huán)境變量:
vi ~/.bashrc
#加入如下內(nèi)容
export HADOOP_HOME=/usr/local/hadoop
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_CLASSPATH=${JAVA_HOME}/lib/tools.jar
保存退出后查描,source ~/.bashrc使配置環(huán)境變量生效。之后輸入hadoop version驗(yàn)證是否配置成功
配置hadoop-env.sh ,路徑為/usr/local/hadoop/etc/hadoop/hadoop-env.sh
#修改JAVA_HOME為具體jdk路徑冬三,否則會(huì)報(bào)找不到j(luò)ava命令
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
修改配置文件/usr/local/hadoop/etc/hadoop/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://master:9000</value>
</property>
</configuration>
其中fs.defaultFS用的是主機(jī)名稱匀油,在hosts中對(duì)應(yīng)的是騰訊云的內(nèi)網(wǎng)地址
<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>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.rpc-bind-host</name>
<value>0.0.0.0</value>
</property>
</configuration>
注意dfs.permissions選項(xiàng)設(shè)置的值為false,可以使eclipse連上hadoop并且上傳文件勾笆。如果上傳文件還報(bào)錯(cuò)敌蚜,修改hdfs文件目錄權(quán)限hadoop fs -chmod 755 /
dfs.namenode.rpc-bind-host配置監(jiān)聽(tīng)全網(wǎng)段,否則eclipse客戶端仍然無(wú)法上傳文件
修改配置文件 mapred-site.xml,保存退出
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
hadoop啟動(dòng)
到這里hadoop的偽分布式就配置完成了窝爪,接下來(lái)進(jìn)行格式化
./bin/hdfs namenode -format
成功的話弛车,會(huì)看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若為 “Exitting with status 1” 則是出錯(cuò)蒲每。
如果進(jìn)行多次格式化纷跛,會(huì)造成namenode和datanodeVERSION不一致,需要修改為一直才行啃勉,否則會(huì)啟動(dòng)不成功,修改的方法參考網(wǎng)站https://blog.csdn.net/baidu_19473529/article/details/52813656
還有一種方法是將namenode和datanode文件夾的內(nèi)容全部刪除忽舟,即dfs.namenode.name.dir和dfs.datanode.data.dir配置的目錄,這樣相當(dāng)于是一個(gè)全新的hadoop
格式化完成后淮阐,運(yùn)行./sbin/start-dfs.shq啟動(dòng)namenode,datanode,secondnamenode叮阅,然后運(yùn)行./sbin/start-yarn.sh啟動(dòng)resource manager ,node manager
運(yùn)行jps命令查看啟動(dòng)的程序
[hadoop@master sbin]$ jps
#運(yùn)行程序如下
481 NodeManager
32486 DataNode
376 ResourceManager
32680 SecondaryNameNode
32381 NameNode
863 Jps
注意點(diǎn)
這樣泣特,搭建hadoop的偽分布式就結(jié)束了浩姥,騰訊云和阿里云主要是內(nèi)網(wǎng)通訊,所以配置host的時(shí)候要特別注意配置為內(nèi)網(wǎng)ip状您,否則eclipse客戶端就會(huì)報(bào)
Exception in thread "main" org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /a/tokens.txt could only be replicated to 0 nodes instead of minReplication (=1). There are 1 datanode(s) running and 1 node(s) are excluded in this operation.