主要完成hadoop集群搭建和yarn上運行flink
1.搭建hadoop偽集群
主要是搭建hadoop MapReduce(yarn)和HDFS
1.1 下載&配置環境變量
這里下載的hadoop二進制包為 2.7.7,下載后解壓到本地,假設是/usr/hadoop/hadoop-2.7.7
#HADOOP VARIABLES START
export HADOOP_INSTALL=/usr/hadoop/hadoop-2.7.7
export HADOOP_HOME=$HADOOP_INSTALL
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
#HADOOP VARIABLES END
1.2 設置ssh
運行命令
ssh localhost
如果出現 “Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.” 類似的錯誤則需要做如下配置
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa # 如果已經生成了公私鑰對則跳過改步驟
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
1.3 配置hdfs
cd hadoop-2.7.7
vim etc/hadoop/core-site.xml
修改core-site.xml文件內容為
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.2/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
vim etc/hadoop/hdfs-site.xml
修改hdfs-site.xml內容為
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.2/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.2/tmp/dfs/data</value>
</property>
</configuration>
注意: 官網的配置只配置了fs.defaultFS和dfs.replication,這樣便可以啟動起來,但是若沒有配置hadoop.tmp.dir參數,則默認使用的臨時目錄為 /tmp/hadoo-hadoop,而這個目錄在重啟時有可能被系統清理掉,導致必須重新執行format才行。
vim etc/hadoop/hadoop-env.sh
需要顯示的聲明JAVA_HOME, 即使環境變量里已經有了JAVA_HOME。否則會報錯:JAVA_HOME is not set and could not be found
## 修改此處為jdk的home目錄
export JAVA_HOME=/opt/jdk/jdk1.8
1.4 格式化和啟動hdfs
$ bin/hdfs namenode -format
$ sbin/start-dfs.sh
成功啟動后可以通過 http://localhost:50070/ 訪問hdfs web頁面。使用jps查看進程可以看到DataNode、NameNode、SecondaryNameNode 三個進程,如果沒有看到NameNode,可以排除下是不是端口有沖突,然后修復core-site.xml中fs.defaultFS配置的端口號重試下。
1.4 配置yarn
vim etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
vim etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
啟動yarn
$ sbin/start-yarn.sh
啟動后可以通過 http://localhost:8088/ 訪問ResourceManager
到此hadoop偽集群已經搭建完畢
1 在yarn上運行flink
flink要下載和hadoop版本對應的flink版本,否則會出現錯誤, 這里我們下載 Apache Flink 1.7.2 with Hadoop® 2.7 for Scala 2.11。下載后解壓為flink-1.7.2。直接運行如下命令即可:
$ flink-1.7.2/bin/flink run -m yarn-cluster -yn 2 ../my-flink-project-0.1.jar
其中yarn-cluster表示在yarn上運行flink集群, my-flink-project-0.1.jar是自己寫的flink程序。
提交后可以通過ResourceManager http://localhost:8088/ 查看yarn任務運行.