Hadoop學習1-MacBook下Hadoop-2.9的配置
MacBook下Hadoop-2.9的配置
由於研究生課程需要,今天下午搭建了本地Hadoop環境。我用的是Hadoop-2.9版本,不打算一上來就3.x(其實是因為大部分教程都是2.x, 呵呵)。
本人MacBook Pro配置是 8G記憶體,256GSSD,InterCore I5處理器。跑起來3個CentOS虛擬機器+IDEA+網易雲+有道雲筆記+QQ+微信+20個Chrome網頁不成問題,大概總佔7G的記憶體,雖然有一點點影響系統速度,可以接受。
1. 安裝VMware Fusion
由於是本地的完全分散式環境搭建,我打算在VMware Fusion中安裝3個CentOS7虛擬機器,其中一個即是namenode也是datanode,另外兩臺datanode,這樣就做到1個namenode+3個datanode。
2.下載CentOS映象
在官網下載 DVD ISO 就好了,標配。
3.下載Hadoop-2.9.1
下載Linux版本的Hadoop。
4.下載JDK1.8
jdk這裡就不用說了,去官網下載Linux版本的jdk1.8。
5.配置Hadoop環境
我們首先配置一個節點,namenode節點,然後直接把配置好的hadoop打包用ssh傳送給其他兩個節點就好了。
- 修改主機名修改HOSTS檔案
為了方便區分,我們用 hostname xxx 命令重設主機名,我三臺虛擬機器分別名為namenode、datanode1、datanode2。
- 修改Hosts檔案
sudo vi /etc/hosts
加上三臺虛擬機器,三個虛擬機器做同樣的操作,注意ip地址換成自己虛擬機器的,不知道可以用ifconfig命令檢視。
192.168.246.128 namenode
192.168.246.129 datanode1
192.168.246.130 datanode2
- JDK配置
Linux下JDK的配置我就不用說了,首先配置好JDK,環境變數JAVA_HOME配置好。
export JAVA_HOME=/opt/Java/jdk1.8.0_181
export PATH= $JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- Hadoop配置
解壓Hadoop到/opt/hadoop
,新增環境變數HADOOP_HOME:
export HADOOP_HOME=/opt/hadoop/hadoop-2.9.1
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
進入Hadoop配置檔案目錄。
cd /opt/hadoop/hadoop-2.9.1/etc/hadoop
會看到很多xml配置檔案和shell指令碼檔案
-rw-r--r--. 1 root root 7861 4月 16 19:52 capacity-scheduler.xml
-rw-r--r--. 1 root root 1335 4月 16 19:52 configuration.xsl
-rw-r--r--. 1 root root 1211 4月 16 19:52 container-executor.cfg
-rw-r--r--. 1 root root 996 9月 24 17:12 core-site.xml
-rw-r--r--. 1 root root 4133 4月 16 19:52 hadoop-env.cmd
-rw-r--r--. 1 root root 4980 9月 24 19:25 hadoop-env.sh
-rw-r--r--. 1 root root 2598 4月 16 19:52 hadoop-metrics2.properties
-rw-r--r--. 1 root root 2490 4月 16 19:52 hadoop-metrics.properties
-rw-r--r--. 1 root root 10206 4月 16 19:52 hadoop-policy.xml
-rw-r--r--. 1 root root 1378 9月 24 17:07 hdfs-site.xml
-rw-r--r--. 1 root root 2230 4月 16 19:52 httpfs-env.sh
-rw-r--r--. 1 root root 1657 4月 16 19:52 httpfs-log4j.properties
-rw-r--r--. 1 root root 21 4月 16 19:52 httpfs-signature.secret
-rw-r--r--. 1 root root 620 4月 16 19:52 httpfs-site.xml
-rw-r--r--. 1 root root 3518 4月 16 19:52 kms-acls.xml
-rw-r--r--. 1 root root 3139 4月 16 19:52 kms-env.sh
-rw-r--r--. 1 root root 1788 4月 16 19:52 kms-log4j.properties
-rw-r--r--. 1 root root 5939 4月 16 19:52 kms-site.xml
-rw-r--r--. 1 root root 14016 4月 16 19:52 log4j.properties
-rw-r--r--. 1 root root 1076 4月 16 19:52 mapred-env.cmd
-rw-r--r--. 1 root root 1507 4月 16 19:52 mapred-env.sh
-rw-r--r--. 1 root root 4113 4月 16 19:52 mapred-queues.xml.template
-rw-r--r--. 1 root root 856 9月 24 15:42 mapred-site.xml
-rw-r--r--. 1 root root 29 9月 24 16:14 slaves
-rw-r--r--. 1 root root 2316 4月 16 19:52 ssl-client.xml.example
-rw-r--r--. 1 root root 2697 4月 16 19:52 ssl-server.xml.example
-rw-r--r--. 1 root root 2250 4月 16 19:52 yarn-env.cmd
-rw-r--r--. 1 root root 4876 4月 16 19:52 yarn-env.sh
-rw-r--r--. 1 root root 1475 9月 24 19:48 yarn-site.xml
- 配置
hadoop-env.sh
這裡暫時只要修改一個地方
export JAVA_HOME=${JAVA_HOME} 改成絕對路徑 export JAVA_HOME=/opt/Java/jdk1.8.0_181/
不知道為什麼,如果不改的話,hadoop是讀取不到變數JAVA_HOME的。
- 配置core-site.xml
<configuration>
<!--配置分散式儲存系統,HDFS-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000/</value>
</property>
<!--配置hdoop臨時檔案儲存目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/hadoop-2.9.1/data/</value>
</property>
</configuration>
- 配置hdfs-site.xml
<configuration>
<!--在hdfs中,每個檔案塊有多少個拷貝-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--取消許可權-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<!--namenode資料的儲存位置-->
<property>
<name>dfs.namenode.data.dir</name>
<value>/opt/hadoop/namenode</value>
</property>
<!--因為這臺機器即是namenode也是datanode,所以也要配置datanode資料路徑-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/datanode</value>
</property>
<!--配置網頁管理hdfs的url-->
<property>
<name>dfs.http.address</name>
<value>namenode:50070</value>
</property>
<property>
<name>dfs.datanode.http.address</name>
<value>namenode:50075</value>
</property>
</configuration>
- 配置mapred-site.xml
<configuration>
<!--配置資源排程器yarn-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- 配置yarn-site.xml
<configuration>
<!-- 配置資源排程器yarn的所在主機名 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>namenode</value>
</property>
<!--配置nodeManager管理方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
- 配置slavers
namenode
datanode1
datanode2
配置結束後,將hadoop安裝目錄整個打包,scp到其他兩個虛擬機器,在那裡直接解壓就好。
6.配置ssh無密碼登陸
在namenode機器機器中,執行
ssh-keygen -t rsa
會在~/.ssh中生成一對公私鑰。
#ls ~/.ssh/
authorized_keys id_rsa id_rsa.pub known_hosts
將整個.ssh目錄scp傳送到另外兩個機器的~/下
scp ~/.ssh/ [email protected]:~/
scp ~/.ssh/ [email protected]:~/
現在你的namenode可以用ssh命令無密碼的登陸到另外兩個虛擬機器的root使用者了。
6.初始化namenode
注意上面的hadoop的環境變數一定要配。
在namenode那臺機器上,用hadoop namenode -format命令初始化
開啟你的所有節點:start-all.sh
在 namenode下用 jps命令檢視開啟的節點。
3476 SecondaryNameNode
3176 NameNode
3756 NodeManager
3629 ResourceManager
3310 DataNode
5118 Jps
如果以上6個節點全部開啟,說明完全分散式hadoop配置成功嘍~~~開森~~~