hadoop 環(huán)境搭建
搭建的軟件版本
- ubuntu 16.04
- hadoop 2.6.5
- java 1.8
在搭建hadoop環(huán)境之前,必須搭建好java的開發(fā)環(huán)境。
java環(huán)境
- 在java官網(wǎng)上下載合適版本的jdk
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- 解壓java安裝包
tar -zxvf jdk-8u181-linux-x64.tar.gz
在/etc/profile中添加如下內(nèi)容:
export JAVA_HOME=/home/hadoop/jdk1.8.0_181 //此處替換jdk安裝路徑
export JAVA_JRE=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
hadoop環(huán)境搭建
創(chuàng)建hadoop用戶
sudo useradd -m hadoop //創(chuàng)建hadoop用戶
sudo passwd hadoop //為hadoop用戶設(shè)置密碼
sudo adduser hadoop sudo //為hadoop用戶添加管理元權(quán)限
安裝ssh,配置無密登錄
sudo apt-get install openssh-server
- 首次登錄,可能需要輸入密碼才可以,但是會(huì)在用戶文件夾下面創(chuàng)建.ssh的文件夾
ssh localhost
進(jìn)入用戶的.ssh文件夾下
cd ~/.ssh/ # 若沒有該目錄,請(qǐng)先執(zhí)行一次ssh localhost
ssh-keygen -t rsa # 會(huì)有提示,都按回車就可以
cat ./id_rsa.pub >> ./authorized_keys # 加入授權(quán)
此時(shí)再登錄localhost就不用再輸入密碼。
在hadoop官網(wǎng)下載合適的版本,這里下載的hadoop2.6.5,下載地址:
http://mirror.bit.edu.cn/apache/hadoop/common/
- 解壓
tar -zxvf hadoop-2.6.5.tar.gz
重命名解壓后的文件夾并給文件夾的權(quán)限給hadoop用戶
mv ./hadoop-2.6.5/ ./hadoop
sudo chown hadoop ./hadoop
進(jìn)入hadoop安裝目錄
cd /home/hadoop/hadoop
./bin/hadoop version
便可以看到hadoop的版本
hadoop單擊配置(非分布式)
非分布式的環(huán)境下無需進(jìn)行其他配置,可以直接跑hadoop里面附帶的例子
cd /home/hadoop/hadoop
mkdir ./input
cp ./etc/hadoop/*.xml ./input # 將配置文件作為輸入文件
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/*
hadoop 偽分布式環(huán)境配置
hadoop的配置文件再hadoo安裝目錄下的/etc/hadoop目錄下面,如在我的環(huán)境里就是 /home/hadoop/hadoop/etc/hadoop下面
- 修改core-site.xml配置文件
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</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>
hadoop配置文件說明
Hadoop 的運(yùn)行方式是由配置文件決定的(運(yùn)行 Hadoop 時(shí)會(huì)讀取配置文件),因此如果需要從偽分布式模式切換回非分布式模式,需要?jiǎng)h除 core-site.xml 中的配置項(xiàng)。
此外,偽分布式雖然只需要配置 fs.defaultFS 和 dfs.replication 就可以運(yùn)行(官方教程如此),不過若沒有配置 hadoop.tmp.dir 參數(shù),則默認(rèn)使用的臨時(shí)目錄為 /tmp/hadoo-hadoop,而這個(gè)目錄在重啟時(shí)有可能被系統(tǒng)清理掉,導(dǎo)致必須重新執(zhí)行 format 才行。所以我們進(jìn)行了設(shè)置,同時(shí)也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否則在接下來的步驟中可能會(huì)出錯(cuò)。
配置完成之后需要格式化
./bin/hdfs namenode -format
格式化完成之后就可以啟動(dòng)hdfs
./sbin/start-dfs.sh
如果安裝java并且配置了環(huán)境變量,但是在啟動(dòng)時(shí)還是報(bào)錯(cuò):Error: JAVA_HOME is not set and could not be found. 則需要在hadoop/etc/hadoop(hadoop為hadoop安裝)目錄下修改hadoop-env.sh文件,在里面加入
export JAVA_HOME=/home/hadoop/jdk1.8.0_181