1. 程式人生 > >Mac 安裝 hadoop+hive+hbase+spark

Mac 安裝 hadoop+hive+hbase+spark

本人剛接觸大資料,在除錯安裝的的過程中,有些bug沒有記錄,有些bug的處理方法也不太記得清了,如下述流程有誤,歡迎批評指正

一、 hadoop

1. 安裝JDK和Hadoop

mac自帶jdk,用homebrew安裝hadoop,注意brew安裝的檔案都在/usr/local/Cellar/下

brew install hadoop

2. 配置ssh免密碼登入

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa ``` 
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

測試一下:ssh localhost

出現 ssh: connect to host localhost port 22: Connection refused

則到系統偏好設定,共享下,開啟遠端登入功能

3. 配置相關檔案(偽分佈形式)

(1) core-site.xml

<configuration>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/Users/glenn/.hadoop_tmp</value>
    <description>A base for other temporary directories.</description
>
</property> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>

注意,這裡hadoop.tmp.dir對應了hadoop的檔案系統路徑,裡面記錄了namenode,datanode,mapred的相關資訊,hdfs下的檔案內容都在這裡,預設情況下,它對應的是/tmp/{$user},這是個隨時會清空的路徑,每次重啟也會自動清空,這將會影響hdfs內容的儲存,必須修改路徑;

如果不修改,對應的bug現象是:jps找不到datanode 或 datanode等;一般這時候需要格式化hdfs,bin/hadoop namenode -format,多次之後,出現 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Java.io.IOException:Incompatible namespaceIDs

(2) hdfs-site.xml

偽分散式不需要備份檔案資訊了

 <configuration>
   <property>
     <name>dfs.replication</name>
     <value>1</value>
   </property>
 </configuration>

(3) mapred-site.xml

 <configuration>
   <property>
     <name>mapred.job.tracker</name>
     <value>localhost:9001</value>
   </property>
 </configuration>

4. 配置環境(~/.bash_profile)

 HADOOP_HOME="/usr/local/Cellar/hadoop/2.8.0"
 PATH=$HADOOP_HOME/sbin:$PATH:                                                                                                              
 export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"

 alias start-hadoop='$HADOOP_HOME/sbin/start-all.sh'
 alias stop-hadoop='$HADOOP_HOME/sbin/stop-all.sh'

5. 測試

格式化hdfs(參考): bin/hadoop namenode -format

啟動hadoop: start-hadoop

bug:“WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable”

原因:hadoop的lib是32位的,系統64位,需要重新編譯lib庫,不管它也可以正常執行大部分功能

命令列檢查: jps

Jps
SecondaryNameNode
ResourceManager
NodeManager
DataNode
NameNode

至少要出現datanode,resourceManager,namenode

瀏覽器檢視:

6. bug

(1)hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop
.ipc.RemoteException: java.io.IOException: … could only be replicated to 0 nodes, instead of 1 …

datanode啟動異常

stop-hadoop
hadoop namenode -format

檢查是不是hadoop.tmp.dir路徑有問題

(2)It looks like you are making an HTTP request to a Hadoop IPC port. This is not the correct port for the web interface on this daemon

單節點hadoop,埠號不是9000,參考5中埠號

二、 hive

1、hive簡介

hive能將hdfs上的資料看作是資料庫表的形式來處理,為此,它需要為資料形成表模式,這些資訊儲存在metastore資料庫中,也就是說,它依賴資料庫的管理模式,所以是需要為節點配置資料庫的

hive的metastore的配置有三種模式:

(1) 內嵌metasore:每次只能有一個內嵌的Derby資料庫可以訪問某個磁碟的資料庫檔案,這是hive預設的配置形式

(2) 本地metastore:支援多使用者同時訪問,但是metastore服務會和hive服務執行在同一個程序

(3)遠端metastore:metastore服務和hive服務執行在不同程序,資料庫可以置於防火牆之後

2、 安裝hive

brew:brew install hive

3、 配置環境(~/.bash_profile)

HIVE_HOME="/usr/local/Cellar/hive/2.1.1"
PATH=$HIVE_HOME/binL$PATH:

4、 配置metastore

這裡採用本地metastore配置

(1) 安裝mysql:brew install mysql

(2) 測試mysql:

mysql.server start

mysql_secure_installation

mysql -u root -p

(3) mysql下建立metastore和hive使用者

mysql> CREATE DATABASE metastore;
mysql> USE metastore;
mysql> CREATE USER 'hiveuser'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,ALTER,CREATE ON metastore.* TO 'hiveuser'@'localhost';

這裡建立了資料庫metastore,本地使用者hiveuser

(4) 下載mysql的jdbc:

curl -L 'http://www.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.22.tar.gz/from/http://mysql.he.net/

sudo cp mysql-connector-java-5.1.15/mysql-connector-java-5.1.22-bin.jar /usr/local/Cellar/hive/hive.version.no/libexec/lib/ 

5、 配置hive

(1) hive-default.xml

直接cp hive-deafult.xml.template hive-default.xml

(2) hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>                                                                                     
 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 <configuration>

 <property>
   <name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value>
 </property>


 <property>
   <name>javax.jdo.option.ConnectionDriverName</name>
   <value>com.mysql.jdbc.Driver</value>
 </property>

 <property>
   <name>javax.jdo.option.ConnectionUserName</name>
   <value>hiveuser</value>
 </property>

 <property>
   <name>javax.jdo.option.ConnectionPassword</name>
   <value>root</value>
 </property>

 <property>
   <name>datanucleus.autoCreateSchema</name>
   <value>true</value>
 </property>

 <property>
   <name>datanucleus.fixedDatastore</name>
   <value>true</value>
 </property>

 <property>
  <name>datanucleus.autoCreateTables</name>
  <value>True</value>
  </property>

 <property>
  <name>hive.metastore.warehouse.dir</name>
  <!-- base hdfs path -->
  <value>/user/hive/warehouse</value>
  <description>location of default database for the warehouse</description>                                                                 
 </property>

 <property>  
    <name>hive.metastore.schema.verification</name>  
    <value>false</value>  
    <description>  
    Enforce metastore schema version consistency.  
    True: Verify that version information stored in metastore matches with one from Hive jars.  Also disable automatic  
    schema migration attempt. Users are required to manully migrate schema after Hive upgrade which ensures  
    proper metastore schema migration. (Default)  
    False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.  
    </description>  
 </property>  
 </configuration>    

主要是配上javax.jdo.option.ConnectionURL,設定為剛剛建立的metastore,javax.jdo.option.ConnectionDriverName設定為jdbc的驅動,javax.jdo.option.ConnectionUserName設定為剛剛建立的使用者hiveuser,hive.metastore.warehouse.dir設定hive內表對應的hdfs路徑根目錄

6、 測試

hadoop開啟:hadoop-start
hive開啟: hive

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/Cellar/hive/2.1.1/libexec/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/Cellar/hadoop/2.8.0/libexec/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]

Logging initialized using configuration in jar:file:/usr/local/Cellar/hive/2.1.1/libexec/lib/hive-common-2.1.1.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.

7、 bug

(1) Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStore

沒有關聯上對應的metastore,這裡可能是沒有事先建立好db,mysql的服務又沒有啟動;也可能是忘記先開啟hadoop;

(2)Version information not found

hive-site.xml中沒有hive.metastore.schema.verification為false

(3)metastore_db cannot create

“ERROR Datastore.Schema (Log4JLogger.java:error(125)) - Failed initialising database.
Failed to create database ‘metastore_db’, see the next exception for details”

檢查hive-site.xml路徑;第一次啟動,寫許可權不夠,sudo hive即可(不確定第二條成不成立,不記得具體如何解決了)

三、 hbase

1. 安裝hbase

brew:brew install hbase

2. 配置引數

(1)hbase-env.sh

這裡我主要打開了hbase自帶的zookeeper,設定hadoop路徑

export HBASE_MANAGES_ZK=true
export HBASE_CLASSPATH="/usr/local/Cellar/hadoop/2.8.0/libexec/etc/hadoop"

(2)hbase-site.xml

<configuration>
   <property>
     <name>hbase.rootdir</name>
     <value>hdfs://localhost:9000/hbase</value>
   </property>
   <property>
     <name>hbase.zookeeper.property.clientPort</name>
     <value>2181</value>
   </property>
   <property>
     <name>hbase.zookeeper.property.dataDir</name>
     <value>/usr/local/var/zookeeper</value>
   </property>
   <property>
     <name>hbase.zookeeper.dns.interface</name>
     <value>lo0</value>
   </property>
   <property>
     <name>hbase.regionserver.dns.interface</name>
     <value>lo0</value>
   </property>
   <property>
     <name>hbase.master.dns.interface</name>
     <value>lo0</value>
   </property>
   <property>
     <name>hbase.cluster.distributed</name>
   <value>true</value>
 </property>
 <property>
     <name>dfs.replication</name>
     <value>1</value>
 </property>
 <property>
     <name>hbase.master.info.port</name>
     <value>60010</value>
 </property>

 </configuration>   

這裡主要是hbase.rootdir埠號要和hadoop的datanode保持一致,zookeeper採用系統預設的,hbase的埠號hbase.master.info.port改為60010

3. 配置環境(~/.bash_profile)

HBASE_HOME="/usr/local/Cellar/hbase/1.2.6"
PATH=$HBASE_HOME/bin:$PATH:

4. 測試

(1)shell下檢視:hbase shell

(2)服務檢視:start-hbase.sh,進入localhost:60010

5. bug

(1)hbase 控制檯打不開

hbase 1.0 以後的版本,需要自己手動配置hbase埠,在檔案 hbase-site.xml 中新增如下配置

<property>
    <name>hbase.master.info.port</name>
    <value>60010</value>
</property>

四、 spark

1. 安裝scala

brew:brew install scala

2. 下載spark

3. 安裝spark

把下載的包解壓到 /usr/local/spark/

4. 配置spark

(1)

cp slaves.template slaves 
cp spark-env.sh.template spark-env.sh

(2) spark-env.sh

 export SCALA_HOME=/usr/loal/Cellar/scala/2.12.3 
 export SPARK_HOME=/usr/local/spark/spark-2.2.0-bin-hadoop2.7
 export HADOOP_HOME=/usr/local/Cellar/hadoop/2.8.0
 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
 export HADOOP_CONF_DIR=/usr/local/Cellar/hadoop/2.8.0/libexec/etc/hadoop
 export SPARK_WORKER_MEMORY=1g
 export SPARK_MASTER_IP=localhost
 export SPARK_WORKER_CORES=2
 export SPARK_LOCAL_IP=127.0.0.1
 export SPARK_MASTER_WEBUI_PORT=1080 

5. 配置環境(~/.bash_profile)

SPARK_HOME=/usr/local/spark/spark-2.2.0-bin-hadoop2.7
PATH=$SPARK_HOME/bin:$PATH:
alias start-spark='sudo $SPARK_HOME/sbin/start-all.sh'
alias stop-spark='sudo $SPARK_HOME/sbin/stop-all.sh'

6. 測試

開啟spark:start-spark
執行demo:

./bin/spark-submit --class org.apache.spark.examples.SparkPi --master local examples/jars/spark-examples_2.11-2.2.0.jar

shell測試:spark-shell

7. bug

(1)Java.NET.BindException: Cannot assign requested address: Service ‘sparkDriver’ failed after 16 retries (starting from 0)! Consider explicitly setting the appropriate port for the service ‘sparkDriver’ (for example spark.ui.port for SparkUI) to an available port or increasing spark.port.maxRetries.

根據提示,這裡是埠號沒設定上,檢查spark-env.sh,是否有設定如下兩個引數

 export SPARK_LOCAL_IP=127.0.0.1
 export SPARK_MASTER_WEBUI_PORT=1080 

(2)Directory /usr/local/spark/spark-2.2.0-bin-hadoop2.7/metastore_db cannot be created.

該路徑上建立db資料夾沒有許可權,用sudo spark-shell

(3)mac [email protected]’s password: localhost: Permission denied, please try again

如果忘記密碼,則重設root密碼:

sudo passwd root

否則可能遠端登入服務沒開啟:

sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist

或者直接在系統偏好設定的共享裡面開啟遠端登入

相關推薦

Mac 安裝 hadoop+hive+hbase+spark

本人剛接觸大資料,在除錯安裝的的過程中,有些bug沒有記錄,有些bug的處理方法也不太記得清了,如下述流程有誤,歡迎批評指正 一、 hadoop 1. 安裝JDK和Hadoop mac自帶jdk,用homebrew安裝hadoop,注意brew

Hadoop Hive HBase Spark Storm概念解釋

HadoopHadoop是什麼? 答:一個分散式系統基礎架構。 Hadoop解決了什麼問題? 答:解決了大資料(大到一臺計算機無法進行儲存,一臺計算機無法在要求的時間內進行處理)的可靠儲存(HDFS)和處理(MapReduce)。 HiveHive是什麼? 答:Hive是建立在Hadoop之上的,使用Ha

大資料之hadoop / hive / hbase 的區別是什麼?有什麼應用場景?

文章目錄 1. hadoop 2. hive 3. hbase 總結 1. hadoop 它是一個分散式計算+分散式檔案系統,前者其實就是 MapReduce,後者是 HDFS 。後者可以獨立執行,前者可以選擇性使用,也

Mac 安裝Hadoop-2.6.0-cdh5.7.0偽分散式

下載Hadoop-2.6.0-cdh5.7.0 單機下載自己需要的版本,我下載的是hadoop-2.6.0-cdh5.7.0 一. 解壓 tar -zxvf hadoop-2.6.0-cdh5.7.0.

hadoop zookeeper hbase spark phoenix (HA)搭建過程

環境介紹: 系統:centos7 軟體包: apache-phoenix-4.14.0-HBase-1.4-bin.tar.gz  下載連結:http://mirror.bit.edu.cn/apache/phoenix/apache-phoenix-4.14.1-HBase-1.4/bin/

mac安裝hadoop偽分散式

目錄 一、 下載jdk 二、 配置hadoop 三、 配置ssh,無密碼登入 四、 啟動hadoop 五、 環境配置 java version "1.8.0" Java(TM) SE Runtime Environment (build 1.

Mac 安裝 Hadoop 3.x

b) core-site.xml開啟 core-site.xml 檔案(位置 etc/hadoop/),改引數如下:<configuration> <property> <name>fs.defaultFS</name> <value>hdfs

spark 2.0.0集群安裝hive on spark配置

3.6 temp format info port urn mysql5.7 del cnblogs 1. 環境準備: JDK1.8 hive 2.3.4 hadoop 2.7.3 hbase 1.3.3 scala 2.11.12 mysql5.7

Hadoop+HBase+Spark+Hive環境搭建

eight 基礎 計算 oracle keygen 結構化 文字 l命令 密鑰 楊赟快跑 簡書作者 2018-09-24 10:24 打開App 摘要:大數據門檻較高,僅僅環境的搭建可能就要耗費我們大量的精力,本文總結了作者是如何搭建大數據環境的(單機版和集

hadoophbasehivespark分散式系統架構原理

全棧工程師開發手冊 (作者:欒鵬) 機器學習、資料探勘等各種大資料處理都離不開各種開源分散式系統,hadoop使用者分散式儲存和map-reduce計算,spark用於分散式機器學習,hive是分散式資料庫,hbase是分散式kv系統,看似互不相關的他們卻

centos7下搭建hadoophbasehivespark分散式系統架構

全棧工程師開發手冊 (作者:欒鵬) 在使用前建議先將當前使用者設定為root使用者。參考https://blog.csdn.net/luanpeng825485697/article/details/80278383中修改使用者許可權的第三種方法。有了

macHadoop、HDFS、Spark環境的安裝和搭建

環境搭建 相比之前搭建Hadoop環境的Windows系統的相對繁瑣步驟,Mac下顯得簡單不少。 雖然我們需要搭建的是Spark環境,但是因為Spark依賴了Hadoop的HDFS以及YARN計算框架,當然還有類似軟體包管理軟體。 安裝前必備 作業系統:Mac OS

Hadoop(HDFS、YARN、HBaseHiveSpark等)預設埠表

埠 作用 9000 fs.defaultFS,如:hdfs://172.25.40.171:9000 9001 dfs.namenode.rpc-address,DataNode會連線這個

Mac單機Hadoop2.7下安裝Spark2.2+配置SparkSQL查詢Hive表+spark-sql CLI 查詢

下面簡單記錄mac單機spark安裝測試的過程 單機Mac安裝spark並做簡單yarn模式shell測試 配置SparkSQL查詢Hive spark-sql CLI 查詢Hive 一、安裝Spark 1-下載安裝scala 移動至

centos7安裝Hadoop+hbase+hive步驟

開發十年,就只剩下這套架構體系了! >>>   

大牛博客!Spark / Hadoop / Kafka / HBase / Storm

logs 梳理 ubuntu http log 9.png kafka 分布 努力     在這裏,非常感謝下面的著名大牛們,一路的幫助和學習,給予了我很大的動力!   有了Hadoop,再次有了Spark,一次又一次,一晚又一晚的努力相伴! HBa

Hive/Hbase/Sqoop的安裝教程

啟動 get Coding 如果 path master 安裝教程 targe name Hive/Hbase/Sqoop的安裝教程 HIVE INSTALL 1.下載安裝包:https://mirrors.tuna.tsinghua.edu.cn/apache/hiv

Spark學習筆記(二) 安裝Hadoop單節點叢集

安裝Hadoop單節點叢集 1. 下載並解壓Hadoop 1.1 下載Hadoop 1.2 解壓Hadoop包 1.3 將解壓的資料夾重新命名為Hadoop,然後拷貝到/usr/local下 2. 設定Hadoop環境變數

Mac eclipse hadoop plugin 安裝

1.下載zip  https://github.com/winghc/hadoop2x-eclipse-plugin 2.找自己的應用程式eclipse.右鍵顯示包內容   3,copy jar包到eclipse dropins目錄下 &nbs

Hadoop HiveHbase整合+thrift

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!