前言
由於現在要用spark,而學習spark會和hdfs和hive打交道,之前在公司服務器配的分布式集群,離開公司之后,自己就不能用了,后來用ambari搭的三台虛擬機的集群太卡了,所以就上網查了一下hadoop+hive的單機部署,以便自己能進行簡單的學習,這里記錄一下,本來想把hadoop和hive的放在一起寫,由於太多,就分成兩篇寫了。
1、首先安裝配置jdk(我安裝的1.8)
2、下載hadoop
下載地址:http://mirror.bit.edu.cn/apache/hadoop/common/,我下載的是hadoop-2.7.5.tar.gz
(由於我之前用的2.7.1是幾年前下載保存在本地的,現在發現之前在配置spark那篇寫的那個hadoop下載地址較慢,所以改成這個地址)
3、解壓到/opt目錄下(目錄根據自己習慣)
tar -zxvf hadoop-2.7.5.tar.gz -C /opt/
4、配置hadoop環境變量
vim /etc/profile
export HADOOP_HOME=/opt/hadoop-2.7.5
export PATH=$PATH:$HADOOP_HOME/bin
source /etc/profile
5、配置hadoop
5.1 配置hadoop-env.sh
vim /opt/hadoop-2.7.5/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/opt/jdk1.8.0_45
找到# The java implementation to use.將其下面的一行改為:
5.2 配置core-site.xml (5.2和5.3中配置文件里的文件路徑和端口隨自己習慣配置)
其中的IP:192.168.44.128為虛擬機ip,不能設置為localhost,如果用localhost,后面在windows上用saprk連接服務器(虛擬機)上的hive會報異常(win讀取的配置也是localhost,這樣localhost就為win本地ip了~也可以給ip加個映射,不過因為單機的我就沒加)。
vim /opt/hadoop-2.7.5/etc/hadoop/core-site.xml
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:///opt/hadoop-2.7.5</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.44.128:8888</value> </property> </configuration>
5.3 配置hdfs-site.xml
vim /opt/hadoop-2.7.5/etc/hadoop/hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:///opt/hadoop-2.7.5/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///opt/hadoop-2.7.5/tmp/dfs/data</value> </property> </configuration>
以下用三台centos為例,ip分別為192.168.44.138、192.168.44.139、192.168.44.140,分別對應別名master、slave1、slave2
1、首先在每個機器上執行
ssh-keygen -t rsa
將三個機器上id_rsa.pub的內容合並起來放在authorized_keys,可以用命令按下面的步驟來,也可以分別將三個機器的公鑰拷貝出來放在一個文件里,之后分別復制到各自機器的authorized_keys,我用的是下面的命令
2.1 在master上執行
cd ~/.ssh cat id_rsa.pub>>authorized_keys
如果不能免密登錄,可能是文件權限不對,執行下面的命令,再驗證一下(這時如果配單機的話,就可以免密登錄本機了,可以執行ssh localhost 或ssh master驗證一下,如下圖)
chmod 710 authorized_keys
然后將master的authorized_keys傳到slave1上的.ssh目錄下
scp -r authorized_keys root@slave1:~/.ssh
2.2 在slave1上執行
cd ~/.ssh cat id_rsa.pub>>authorized_keys scp -r authorized_keys root@slave2:~/.ssh
2.3 在slave2上執行
這一步實際是將salve1的id_rsa.pub和master傳過來的authorized_keys里的內容合並起來存到authorized_keys,然后將authorized_keys傳到slave2機器上
cd ~/.ssh cat id_rsa.pub>>authorized_keys scp -r authorized_keys root@master:~/.ssh scp -r authorized_keys root@slave1:~/.ssh
ssh master這一步實際是將salve2的id_rsa.pub和slave1傳過來的authorized_keys里的內容合並起來存到authorized_keys,然后將authorized_keys傳到master、slave1機器上。
到這里,每台機器上的authorized_keys都含有三台機器的公鑰,在每台機器上驗證一下是否可以免密ssh登錄到三台機器上了。
ssh slave1 ssh slave2
如果都不需要輸入密碼,就代表配置成功!
7、啟動與停止
第一次啟動hdfs需要格式化:
cd /opt/hadoop-2.7.5 ./bin/hdfs namenode -format
Re-format filesystem in Storage Directory /opt/hadoop-2.7.5/tmp/dfs/name ? (Y or N)
輸入:Y
(出現詢問輸入Y or N,全部輸Y即可)
啟動:
./sbin/start-dfs.sh
停止:
./sbin/stop-dfs.sh
驗證,瀏覽器輸入:http://192.168.44.128:50070
簡單的驗證hadoop命令:
hadoop fs -mkdir /test
在瀏覽器查看,出現如下圖所示,即為成功
8、配置yarn
8.1 配置mapred-site.xml
cd /opt/hadoop-2.7.5/etc/hadoop/ cp mapred-site.xml.template mapred-site.xml vim mapred-site.xml
<configuration> <!-- 通知框架MR使用YARN --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
vim yarn-site.xml
<configuration> <!-- reducer取數據的方式是mapreduce_shuffle --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
8.3 yarn啟動與停止
啟動:
cd /opt/hadoop-2.7.5 ./sbin/start-yarn.sh
停止:
./sbin/stop-yarn.sh
瀏覽器查看:http://192.168.44.128:8088
jps查看進程
到此,hadoop單機模式就配置成功了!