Hadoop、Spark、Hbase、Hive的安装
為什么80%的碼農都做不了架構師?>>> ??
? ? ? ? 工作中需要使用Hadoop環境,在三節點上搭建了一套Hadoop環境,順便做下筆記。因為機器內存較低,沒有使用CDH,為保證和線上環境一致,使用Hadoop等版本和CDH5.10的一致。
一、環境及軟件準備
設置ip地址,hosts,ssh免密登錄,scp,sudo,關閉防火墻,yum,ntp時間同步 略。
Java安裝 略。
軟件選擇,這里選擇的為CDH5.10中的軟件版本。
hadoop-2.6.0.tar.gz apache-hive-1.1.0-bin.tar.gz hbase-1.2.0-bin.tar.gz spark-1.6.0-bin-hadoop2.6.tgz| IP | 主機名 | 節點 |
| 192.168.30.100 | hadoop1 | zk?,NameNode,ResourceManager,NodeManager, SecondaryNameNode,spark,sparkHistory,HMaster |
| 192.168.30.101 | hadoop2 | zk,DataNode,NodeManager,spark,HRegionServer |
| 192.168.30.102 | hadoop3 | zk,DataNode,NodeManager,spark,HRegionServer |
二、ZooKeerper 集群安裝
1、解壓Zookeeper
tar xf zookeeper-3.3.6.tar.gz -C /home/hadoop cd /home/hadoop ln -s zookeeper-3.3.6 zookeeper2、增加配置文件
(1)bin/zkEnv.sh,配置JDK(可選,如果存在多個JDK)
JAVA_HOME=/home/hadoop/java(2)進入到zookeeper的conf/中,將zoo_sample.cfg拷貝成zoo.cfg,并添加如下內容:
tickTime=2000 dataDir=/home/hadoop/zookeeper/data clientPort=2181 initLimit=5 syncLimit=2 server.1=hadoop1:2888:3888 server.2=hadoop2:2888:3888 server.3=hadoop3:2888:38883、將zookeeper目錄復制到其他節點上。
scp -r /home/hadoop/zookeeper hadoop@hadoop2:/home/hadoop scp -r /home/hadoop/zookeeper hadoop@hadoop3:/home/hadoop4、添加myid文件(每節點都需要)
mkdir data echo "1" > data/myid注意,每個節點myid文件要不一致
5、啟動并測試
在3個節點上啟動ZK服務
[hadoop@hadoop1 zookeeper]$ bin/zkServer.sh start JMX enabled by default Using config: /home/hadoop/zookeeper-3.3.6/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [hadoop@hadoop1 zookeeper]$ jps -l 10760 sun.tools.jps.Jps 10735 org.apache.zookeeper.server.quorum.QuorumPeerMain?進入ZK客戶端測試
bin/zkCli.sh三、Hadoop集群
1、解壓軟件
tar xf hadoop-2.6.0.tar.gz ln -s hadoop-2.6.0 hadoop2、修改配置文件
(1)、etc/hadoop/hadoop-env.sh,配置JDK(可選,如果存在多個JDK)
export JAVA_HOME=/home/hadoop/java(2)、core-site.xml
<configuration><property><name>fs.defaultFS</name><value>hdfs://hadoop1:9000</value></property><property><name>hadoop.tmp.dir</name><value>/home/hadoop/hadoop/data/tmp</value></property> </configuration>(3)、hdfs-site.xml
<configuration><property><name>dfs.namenode.name.dir</name><value>/home/hadoop/hadoop/data/name</value></property><property><name>dfs.datanode.data.dir</name><value>/home/hadoop/hadoop/data/data</value></property><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.secondary.http.address</name><value>hadoop1:50090</value></property> </configuration>(4)、mapred-site.xml
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property> </configuration>(5)、yarn-site.xml
<configuration><property><name>yarn.resourcemanager.hostname</name><value>hadoop1</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property> </configuration>(6)、slaves
hadoop1 hadoop2 hadoop32、創建目錄文件
mkdir -p /home/hadoop/hadoop/data/name mkdir -p /home/hadoop/hadoop/data/data mkdir -p /home/hadoop/hadoop/data/tmp3、復制Hadoop到其他節點
scp -r hadoop hadoop@hadoop2:/home/hadoop scp -r hadoop hadoop@hadoop3:/home/hadoop4、/etc/profile.d/hadoop.sh增加環境變量
export HADOOP_HOME=/home/hadoop/hadoop export PATH=$PATH:$HADOOP_HOME/bin?5、生效環境變量
source /etc/profile.d/hadoop.sh6、初始化HDFS
bin/hadoop namenode -format7、啟動集群
sbin/start-all.sh8、測試
bin/hadoop jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar pi 5 10求出pi就ok了
JobList ? http://hadoop1:8088
Hdfs ? ? ? ? http://hadoop1:50070
四、安裝Spark
1、安裝Scala
tar xf scala-2.10.6.tgz -C /home/hadoop/ cd /home/hadoop/ ln -s scala-2.10.6 scala2、復制Scala到其他節點
scp -r scala hadoop@hadoop2:/home/hadoop/ scp -r scala hadoop@hadoop3:/home/hadoop/3、/etc/profile.d/scala.sh設置環境變量
export SCALA_HOME=/home/hadoop/scala export PATH=$PATH:$SCALA_HOME/bin4、解壓Spark
tar xf spark-1.6.0-bin-hadoop2.6.tgz -C /home/hadoop cd /home/hadoop ln -s spark-1.6.0-bin-hadoop2.6 spark5、conf/spark-env.sh設置配置文件
export JAVA_HOME=/home/hadoop/java export SCALA_HOME=/home/hadoop/scala export HADOOP_HOME=/home/hadoop/hadoop export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop6、復制到其他節點
scp -r spark hadoop@hadoop2:/home/hadoop/ scp -r spark hadoop@hadoop3:/home/hadoop/7、/etc/profile.d/spark.sh設置環境變量
export SPARK_HOME=/home/hadoop/spark export PATH=$PATH:$SPARK_HOME/bin8、測試
/home/hadoop/spark/bin/spark-submit \--class org.apache.spark.examples.SparkPi \--master yarn \--deploy-mode client \--driver-memory 1g \--executor-memory 1g \--executor-cores 2 \/home/hadoop/spark/lib/spark-examples-1.6.0-hadoop2.6.0.jar \10求出pi便ok了
如果使用JDK1.8可能報錯
異常關鍵如下
ERROR client.TransportClient: Failed to send RPC 8305478367380188725 to /192.168.30.102:43246: java.lang.IllegalStateException: Spark context stopped while waiting for backend分析:
按照上述配置提供的信息,目測可能給節點分配的內存太小,yarn直接kill掉了進程,導致ClosedChannelException
解決方案:切換成1.7或修改yarn-site.xml,添加下列property
<property><name>yarn.nodemanager.pmem-check-enabled</name><value>false</value> </property><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value> </property>然后重啟Yarn即可。
9、配置Spark History Server
(1)spark-defaults.conf
spark.eventLog.enabled true spark.eventLog.dir hdfs://hadoop1:9000/history spark.eventLog.compress truespark.eventLog.enabled:是否記錄Spark事件,用于應用程序在完成后的籌夠WebUI。
spark.eventLog.dir:設置spark.eventLog.enabled為true后,該屬性為記錄spark時間的根目錄。在此根目錄中,Spark為每個應用程序創建分目錄,并將應用程序的時間記錄到此目錄中。用戶可以將此屬性設置為HDFS目錄,以便History Server讀取。
spark.eventLog.compress:是否壓縮記錄Spark事件,前提spark.eventLog.enabled為true,默認使用的是snappy。
(2)spark-env.sh
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=10 -Dspark.history.fs.logDirectory=hdfs://hadoop1:9000/history"spark.history.ui.port=18080 ?調整WEBUI訪問的端口號為18080
spark.history.fs.logDirectory=hdfs://hadoop1:9000/history ?配置了該屬性后,在start-history-server.sh時就無需再顯示的指定路徑
spark.history.retainedApplications=10 ? 指定保存Application歷史記錄的個數,如果超過這個值,舊的應用程序信息將被刪除
(2)創建HDFS目錄
hadoop fs -mkdir /history(3)啟動進程?
sbin/start-history-server.shSparkHistory? http://hadoop1:18080
五、安裝HBase
1、解壓
tar xf hbase-1.2.0-bin.tar.gz -C /home/hadoop cd /home/hadoop ln -s hbase-1.2.0 hbase2、hbase-env.sh
export JAVA_HOME=/home/hadoop/java //告訴hbase使用外部的zk export HBASE_MANAGES_ZK=false export HBASE_PID_DIR=/home/hadoop/hbase/logs3、hbase-site.xml
<configuration><!-- 指定hbase在HDFS上存儲的路徑 --><property><name>hbase.rootdir</name><value>hdfs://hadoop1:9000/hbase</value></property><!-- 指定hbase是分布式的 --><property><name>hbase.cluster.distributed</name><value>true</value></property><!-- 指定zk的地址,多個用“,”分割 --><property><name>hbase.zookeeper.quorum</name><value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value></property> </configuration>4、regionservers
hadoop2 hadoop35、復制到其他節點
scp -r hbase hadoop@hadoop2:/home/hadoop scp -r hbase hadoop@hadoop3:/home/hadoop6、/etc/profile.d/hbase.sh設置環境變量
export HBASE_HOME=/home/hadoop/hbase export PATH=$PATH:$HBASE_HOME/bin7、啟動集群
bin/start-hbase.sh管理界面 ?http://hadoop1:16010
六、安裝HIVE
1、安裝MySql
1、安裝MySQL yum install -y mysql-server 2、啟動MySQL service mysqld start 3、root登錄新建新用戶 mysql -u root -p root初始密碼為空,輸入命令后直接回車即可。 mysql> use mysql; mysql> update user set password = Password('root') where User = 'root'; mysql> create user 'hive'@'%' identified by 'hive'; mysql> grant all privileges on *.* to 'hive'@'%' with grant option; mysql> flush privileges; mysql> exit; 4、創建數據庫 mysql> create database hive;2、解壓
tar xf apache-hive-1.1.0-bin.tar.gz -C /home/hadoop cd /home/hadoop ln -s apache-hive-1.1.0-bin hive cd hive cp conf/hive-log4j.properties.template conf/hive-log4j.properties cp conf/hive-default.xml.template conf/hive-site.xml3、/etc/profile.d/hive.sh環境變量
export HIVE_HOME=/home/hadoop/hive export PATH=$HIVE_HOME/bin:$PATH4、創建Hive數據文件目錄:
hadoop fs -mkdir /tmp hadoop fs -mkdir /user/hive/warehouse hadoop fs -chmod 777 /tmp hadoop fs -chmod 777 /user/hive/warehouse其中/tmp用于存放一些執行過程中的臨時文件,/user/hive/warehouse用于存放Hive進行管理的數據文件。
5、配置文件
hive-site.xml(修改如下配置)
<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value><description>JDBC connect string for a JDBC metastore</description> </property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description> </property><property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value><description>username to use against metastore database</description> </property><property><name>javax.jdo.option.ConnectionPassword</name><value>hive</value><description>password to use against metastore database</description> </property><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value><description>location of default database for the warehouse</description> </property>6、添加MySql的jar包
wget http://search.maven.org/remotecontent?filepath=mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar cp mysql-connector-java-5.1.38.jar /home/hadoop/hive/lib7、初始化MySql庫
bin/schematool -dbType mysql -initSchema此時可能會報錯
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected原因是hadoop目錄下存在老版本jline,解決方案,將hive下的新版本jline的JAR包拷貝到hadoop下
mv /home/hadoop/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar /home/hadoop/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar.bak cp lib/jline-2.12.jar /home/hadoop/hadoop/share/hadoop/yarn/lib/8、啟動服務
創建臨時文件目錄
mkdir /home/hadoop/hive/tmp nohup bin/hive --service hiveserver2 >> tmp/hive-hiveserver2.log 2>&1 & nohup bin/hive --service metastore >> tmp/hive-metastore.log 2>&1 &9、啟動Shell測試
bin/hive shell啟動報錯的話
Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D搜索hive-site.xml中所有system:java.io.tmpdir,并指定到/home/hadoop/hive/tmp即可
10、安裝管理端
HWI的運行需要依賴兩個包:hive-hwi-<version>.jar和hive-hwi-<version>.war,這兩個包應該都部署在$HIVE_HOME/lib目錄下。但Hive的安裝包lib目錄下可能沒有提供hive-hwi-<version>.war,解決辦法很簡單,下載Hive的源碼,進入源碼的\hwi\web\目錄下,將該目錄下的文件夾和文件壓縮成zip包,再重命名為hive-hwi-<version>.war,放到$HIVE_HOME/lib目錄下即可。
(1)解壓apache-hive-1.1.0-src.tar.gz?
tar xf apache-hive-1.1.0-src.tar.gz(2)創建壓縮文件
cd apache-hive-1.1.0-src/hwi/web zip -r hive-hwi-1.1.0.war ./* cp hive-hwi-1.1.0.war /home/hadoop/hive/lib(3)hive-site.xml(修改如下配置)
<property><name>hive.hwi.listen.host</name><value>0.0.0.0</value> </property> <property><name>hive.hwi.listen.port</name><value>9999</value> </property> <property><name>hive.hwi.war.file</name><value>lib/hive-hwi-1.1.0.war</value> </property>(4)啟動服務?
復制JDK的tool到HIVE的lib目錄(不然進入圖形會報錯)
Unable to find a javac compiler; com.sun.tools.javac.Main is not on the classpath. Perhaps JAVA_HOME does not point to the JDK.?復制JDK的tool到HIVE的lib目錄
cp $JAVA_HOME/lib/tools.jar $HIVE_HOME/lib/?啟動服務
nohup bin/hive --service hwi >> tmp/hive-hwi.log 2>&1 &管理界面 ?http://hadoop1:9999/hwi/
轉載于:https://my.oschina.net/mywiki/blog/1480636
總結
以上是生活随笔為你收集整理的Hadoop、Spark、Hbase、Hive的安装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell编程学习笔记--整数自增
- 下一篇: ghld