以前看過Hadoop沮稚,熟悉Hadoop的具體流程衡怀,也看了部分源碼,由于Spark比Hadoop高效蓝纲,想一直看也沒來得及抄邀,今天準(zhǔn)備玩玩Spark耘眨,先從安裝開始。
版本
Java:1.8
Hadoop:2.7.0
Spark:2.1.0
安裝Java與Hadoop主要步驟
- 配置jdk境肾、Hadoop環(huán)境變量
- 更改hosts文件
- 配置SSH免密碼登錄
- 修改Hadoop配置文件
- 將配置好的jdk剔难、Hadoop分發(fā)到各個節(jié)點
- 格式化Hadoop
Hadoop-2.7.0/etc/hadoop 目錄里面
本人將Java,Hadoop分別安裝在奥喻,
/home/my105/jdk1.9
/home/my105/hadoop-2.7.0
hadoop-env.sh
export JAVA_HOME=/home/my105/jdk1.8
配置core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/my105/tmp</value>
</property>
<property>
<name>hadoop.proxyuser.hduser.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hduser.groups</name>
<value>*</value>
</property>
</configuration>
配置YARN偶宫,yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resouremanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
配置mapred-site.xml
<configuration>
<property>
<name>mapreduce.framwork.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
配置hdfs-site.xml
此處我將NameNode和DataNode目錄放:/home/my105/hadoop-2.7.0/nodetemp 中的兩個文件,安裝完成后執(zhí)行:
sudo chmod 777 hadoop-2.7.0 -R
以上便于hadoop文件有權(quán)限創(chuàng)建上面的文件
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/my105/hadoop-2.7.0/nodetemp/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/my105/hadoop-2.7.0/nodetemp/datanode</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
配置master與slave文件
如果沒有發(fā)現(xiàn)master文件环鲤,自己創(chuàng)建一個
master文件:
master
slaves文件:
slave1
slave2
slave3
格式化 與啟動
將配置好的Hadoop與JDK分別scp到各個Slave中纯趋,然后格式化,啟動,進(jìn)入Hadoop-2.7.0/ 目錄
./bin/hadoop namenode - format
./sbin/start-all.sh
最后輸入:jps吵冒,查看啟動進(jìn)程
master主機:
10648 ResourceManager
10265 NameNode
12939 Jps
10494 SecondaryNameNode
slave主機:
6977 NodeManager
7202 DataNode
7821 Jps
錯誤分析
如果沒有出現(xiàn)上面的纯命,或者出現(xiàn)錯誤,進(jìn)入hadoop-2.7.0/logs
我一開始格式化后再重新格式化后痹栖,發(fā)現(xiàn)slave主機的DataNode啟動不了亿汞,直接進(jìn)入logs
vi hadoop-my105-datanode-slave1.log
發(fā)現(xiàn)了如下錯誤
org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to master
就是master和slave主機生成的NameNode和DataNode目錄文件不一樣,所以先把生成的文件刪除揪阿,然后再格式化留夜,或者將Uuid 拷貝過去
Spark 安裝
先進(jìn)入官網(wǎng)下載一個
版本:Spark-2.1.0
安裝流程
- 配置文件
- 分發(fā)到各個節(jié)點
- 啟動
由于是預(yù)先安裝得Hadoop,所以在此處選擇without hadoop
配置文件图甜,可能沒有碍粥,將spark-2.1.0/conf 下的部分帶template的改為如下名字,并添加
配置spark-env.sh
export JAVA_HOME=/home/my105/jdk1.8
export HADOOP_HOME=/home/my105/hadoop-2.7.0
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=master
SPARK_LOCAL_DIRS=/home/my105/spark-2.1.0
SPARK_DRIVER_MEMORY=1G
配置slvaes
slave1
slave2
slave3
啟動集群
./sbin/start-all.sh
啟動黑毅,然后jps會發(fā)現(xiàn)如下內(nèi)容
master主機:Maser
10648 ResourceManager
10265 NameNode
13018 Jps
10494 SecondaryNameNode
11855 Master
slave主機:Worker
6977 NodeManager
7202 DataNode
7895 Jps
7498 Worker