Hadoop2.7.3完全分布式(虛擬機)

jdk1.8 + Hadoop2.7.3 + Spark2.2.0 + Scala2.11.8

hadoop 2.7之后的tar.gz包都是64位的

1 clone之前

1.1 安裝vmware蔓同,安裝centos7

網(wǎng)絡(luò)連接選host-only
centos7選基礎(chǔ)設(shè)施服務(wù)器(Infrastructure Server)

1.2 修改hostname豆巨,改網(wǎng)絡(luò)配置冯键,克隆之后需要分別改

在宿主機用ifconfig(/sbin/ifconfig)查看vmnet1虛擬網(wǎng)卡(對應(yīng)于vmware的host-only模式)對應(yīng)的網(wǎng)關(guān)(inet addr)户魏,這里是192.168.176.1

打算安裝一臺master
192.168.176.100 master
兩臺slave
192.168.176.101 slave1
192.168.176.102 slave2

hostnamectl set-hostname master

systemctl stop firewalld
systemctl disable firewalld

vi /etc/sysconfig/network-scripts/ifcfg-ens33  // "ens33" it depends
TYPE=Ethernet
IPADDR=192.168.176.100
NETMASK=255.255.255.0
GATEWAY=192.168.176.1
PEERDNS=no

vi /etc/sysconfig/network

NETWORKING=yes
GATEWAY=192.168.176.1

vi /etc/resolv.conf
nameserver 192.168.1.1

service network restart

現(xiàn)在已經(jīng)可以ping通宿主機媚媒,用sftp上傳安裝文件榆纽,用ssh操作master, slave1, slave2

1.3 改hosts

vi /etc/hosts
192.168.176.100 master
192.168.176.101 slave1
192.168.176.102 slave2

1.4 解壓jdk蒿叠,hadoop,spark券册,scala...

cd /usr/local
tar -zxvf ... // it depends

修改profile

vim /etc/profile

JAVA_HOME=/usr/java/jdk1.8.0_144
JRE_HOME=$JAVA_HOME/jre
DERBY_HOME=$JAVA_HOME/db
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME DERBY_HOME PATH CLASSPATH

export HADOOP_HOME=/usr/local/hadoop-2.7.3
export SCALA_HOME=/usr/local/scala-2.11.8
export SPARK_HOME=/usr/local/spark-2.2.0-bin-hadoop2.7
export HIVE_HOME=/usr/local/apache-hive-2.3.0-bin
export HBASE_HOME=/usr/local/hbase-2.0.0-alpha-1
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.10

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$SPARK_HOME/bin:$HIVE_HOME/bin:$HBASE_HOME/bin:$ZOOKEEPER_HOME/bin

1.5 配置hadoop

mkdir tmp hdfs hdfs/data hdfs/name

分別修改 hadoop-env.sh, core-site.xml, hdfs-site.xml, yarn-site.xml, mapred-site.xml, slaves
默認(rèn)配置查看如下:

core-default.xml
hdfs-site.xml
mapred-default.xml
yarn-default.xml

cd /usr/local/hadoop-2.7.3/etc/hadoop

vi hadoop-env.sh
// 修改JAVA_HOME=/usr/java/jdk1.8.0_144


vi core-site.xml
<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/usr/local/hadoop-2.7.3/tmp</value>
        </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
</configuration>


vi hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop-2.7.3/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop-2.7.3/hdfs/data</value>
    </property>
</configuration>


vi yarn-site.xml
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>


// cp mapred-site.xml.templete mapred-site.xml
vi mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

vi slaves
slave1
slave2

1.6 建立非root用戶hadoop

useradd hadoop
passwd hadoop

// 給hadoop用戶開文件權(quán)限
chown -R hadoop:hadoop ./hadoop-2.7.3

1.7 從CST轉(zhuǎn)換為UTC:

cp -af /usr/share/zoneinfo/UTC /etc/localtime
date

1.8 spark配置

cd /usr/local/spark-2.2.0-bin-hadoop2.7/conf
vi slaves
slave1
slave2

vi spark-env.sh
# spark setting
export JAVA_HOME=/usr/java/jdk1.8.0_144
export SCALA_HOME=/usr/local/scala-2.11.8
export SPARK_MASTER_IP=master
export SPARK_WORKER_MEMORY=8g
export SPAKR_WORKER_CORES=4
export HADOOP_CONF_DIR=/usr/local/hadoop-2.7.3/etc/hadoop

2 clone之后

得到slave1, slave2频轿,修改slave1和slave2的hostname和網(wǎng)絡(luò)配置

2.1 root(或者h(yuǎn)adoop)用戶ssh免密碼互聯(lián)master, slave1, slave2

// cp ~
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

在root(hadoop)下分別把id_rsa.pub分別復(fù)制到其他兩臺機器的authorized_keys中,用ssh命令互相連接測試 ssh slave1, ssh slave2, ssh master

3 其他

3.1 宿主機為linux汁掠、windows分別實現(xiàn)VMware三種方式上網(wǎng)

http://linuxme.blog.51cto.com/1850814/389691

3.2 常用命令

jps
start-dfs.sh
start-yarn.sh
start-all.sh
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode

netstat -ntlp
hadoop dfsadmin -report | more

hadoop

// web ui

http://192.168.176.100:50070

3.3 Hadoop FileSystem

http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html

hadoop fs -cat URI [URI …]
hadoop fs -cp URI [URI …] <dest>
hadoop fs -copyFromLocal <localsrc> URI // 除了限定源路徑是一個本地文件外略吨,和put命令相似。
hadoop fs -copyToLocal [-ignorecrc] [-crc] URI <localdst> // 除了限定目標(biāo)路徑是一個本地文件外考阱,和get命令類似。
hadoop fs -du URI [URI …]
hadoop fs -dus <args>
hadoop fs -get <from> <to>
hadoop fs -put
hadoop fs -ls <args>
hadoop fs -lsr <args> // 遞歸版的ls
hadoop fs -mkdir <paths> // 只能一級級的建目錄
hadoop fs -mv URI [URI …] <dest> // 將文件從源路徑移動到目標(biāo)路徑
hadoop fs -rm
hadoop fs -rmr   // 遞歸版的rm


hadoop dfs, hadoop fs, hdfs dfs的區(qū)別
Hadoop fs:使用面最廣鞠苟,可以操作任何文件系統(tǒng)乞榨。
hadoop dfs與hdfs dfs:只能操作HDFS文件系統(tǒng)相關(guān)(包括與Local FS間的操作)秽之,前者已經(jīng)Deprecated,一般使用后者吃既。

4. Hive部署

在安裝Hive前考榨,先安裝MySQL,以MySQL作為元數(shù)據(jù)庫鹦倚,Hive默認(rèn)的元數(shù)據(jù)庫是內(nèi)嵌的Derby河质,但因其有單會話限制,所以選用MySQL震叙。MySQL部署在hadoop-master節(jié)點上掀鹅,Hive服務(wù)端也安裝在hive-master上

元數(shù)據(jù)(Metadata),又稱中介數(shù)據(jù)媒楼、中繼數(shù)據(jù)乐尊,為描述數(shù)據(jù)的數(shù)據(jù)(data about data),主要是描述數(shù)據(jù)屬性(property)的信息划址,用來支持如指示存儲位置扔嵌、歷史數(shù)據(jù)、資源查找夺颤、文件記錄等功能痢缎。元數(shù)據(jù)算是一種電子式目錄,為了達(dá)到編制目錄的目的世澜,必須在描述并收藏數(shù)據(jù)的內(nèi)容或特色独旷,進而達(dá)成協(xié)助數(shù)據(jù)檢索的目的。

4.1 Hive環(huán)境變量配置(見1.4)

4.2 Hive配置

http://www.reibang.com/p/978a77a1d6a2

將$HIVE_HOME/conf/下的兩個文件重命名:
           mv hive-default.xml.template hive-site.xml
           mv hive-env.sh.template hive-env.sh

vim hive-env.sh
配置其中的HADOOP_HOME宜狐,將HADOOP_HOME前面的#號去掉

vim hive-site.xml(到處參考)
hive.metastore.schema.verification // false
// 在hive目錄下創(chuàng)建tmp文件夾
${system:java.io.tmpdir} 改為tmp目錄
${system:user.name} 改為用戶名势告,這里是root
修改連接mysql的jdbc

啟動Hive 的 Metastore Server服務(wù)進程
nohup是永久執(zhí)行,執(zhí)行結(jié)果會在當(dāng)前目錄生成一個nohup.out日志文件抚恒,可以查看執(zhí)行信息
&是指在后臺運行

hive --service metastore &
// 推薦使用nohup啟動咱台,不會隨著對話結(jié)束而停止
nohup hive --service metastore &

Hive第一次登錄需要初始化(*)

schematool -dbType mysql -initSchema

4.3 MySQL安裝方式,建議第一種方式

4.3.1 Linux-Generic

官網(wǎng)下載MySQL Community Server俭驮,操作系統(tǒng)選Linux-Generic

https://www.bilibili.com/video/av6147498/?from=search&seid=673467972510968006
http://blog.csdn.net/u013980127/article/details/52261400

自己用這種方式安裝的

  1. 安裝
    檢查庫文件是否存在回溺,如有刪除。
    rpm -qa | grep mysql

官網(wǎng)下載Linux - Generic (glibc 2.12) (x86, 64-bit), Compressed TAR Archive

https://dev.mysql.com/downloads/mysql/

解壓即可

tar -xvf mysql-5.7.19-linux-glibc2.12-i686.tar.gz
  1. 檢查mysql組和用戶是否存在混萝,如無創(chuàng)建mysql:mysql
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
groupadd mysql
useradd -r -g mysql mysql
  1. 修改資源使用配置文件
sudo vim /etc/security/limits.conf

mysql hard nofile 65535
mysql soft nofile 65535

  1. 初始化遗遵,啟動一個實例
vim /etc/my.cnf
[mysqld]
port=3306
socket=/tmp/mysql.sock
user=mysql
datadir=...
...

啟動實例,注意修改里面的內(nèi)容

cd to top dir of mysql
bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
  1. 初始化root用戶的密碼為12345
    第一次啟動逸嘀,使用初始化密碼
cat /root/.mysql_secret

啟動mysql實例车要,敲入/root/.mysql_secret中的密碼

mysql uroot -p    // 這里myql加入到了環(huán)境變量中

添加mysql環(huán)境變量

export PATH=$PATH:/usr/local/mysql/bin

進去之后修改密碼

SET PASSWORD = PASSWORD('12345');
flush privileges;

下次啟動時使用修改后的密碼

mysql uroot -p   // 密碼12345
  1. 繼續(xù),添加遠(yuǎn)程訪問權(quán)限
use mysql;
update user set host = '%' where user = 'root';

重啟服務(wù)生效

/etc/init.d/mysqld restart
  1. 為master創(chuàng)建hive用戶崭倘,密碼為12345翼岁,用來鏈接hive
mysql>CREATE USER 'hive' IDENTIFIED BY '12345';
mysql>GRANT ALL PRIVILEGES ON *.* TO 'hive'@'master' WITH GRANT OPTION;
mysql>flush privileges;

啟動方式

mysql -h master -uhive -p
  1. 設(shè)置為開機自啟動
sudo chkconfig mysql on

4.3.2 Yum Repository

wget http://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm  
// 或者到https://dev.mysql.com/downloads/repo/yum/下載rpm

rpm -ivh mysql57-community-release-el7-11.noarch.rpm 

yum install mysql-server

4.4 spark sql 支持hive

按照官方doc的說法类垫,只需要把$HIVE_HOME/conf下hive-site.xml, core-site.xml文件copy到$SPARK_HOME/conf下即可,同時用scp傳到slave機器上

Spark SQL also supports reading and writing data stored in Apache Hive. However, since Hive has a large number of dependencies, these dependencies are not included in the default Spark distribution. If Hive dependencies can be found on the classpath, Spark will load them automatically. Note that these Hive dependencies must also be present on all of the worker nodes, as they will need access to the Hive serialization and deserialization libraries (SerDes) in order to access data stored in Hive.

Configuration of Hive is done by placing your hive-site.xml, core-site.xml (for security configuration), and hdfs-site.xml (for HDFS configuration) file in conf/.

When working with Hive, one must instantiate SparkSession with Hive support, including connectivity to a persistent Hive metastore, support for Hive serdes, and Hive user-defined functions. Users who do not have an existing Hive deployment can still enable Hive support. When not configured by the hive-site.xml, the context automatically creates metastore_db in the current directory and creates a directory configured by spark.sql.warehouse.dir, which defaults to the directory spark-warehouse in the current directory that the Spark application is started. Note that the hive.metastore.warehouse.dir property in hive-site.xml is deprecated since Spark 2.0.0. Instead, use spark.sql.warehouse.dir to specify the default location of database in warehouse. You may need to grant write privilege to the user who starts the Spark application.

4.5 Hive 操作

Hive四種數(shù)據(jù)導(dǎo)入方式

http://blog.csdn.net/lifuxiangcaohui/article/details/40588929

分區(qū):在Hive中琅坡,表的每一個分區(qū)對應(yīng)表下的相應(yīng)目錄悉患,所有分區(qū)的數(shù)據(jù)都是存儲在對應(yīng)的目錄中。比如wyp表有dt和city兩個分區(qū)榆俺,則對應(yīng)dt=20131218,city=BJ對應(yīng)表的目錄為/user/hive/warehouse/dt=20131218/city=BJ售躁,所有屬于這個分區(qū)的數(shù)據(jù)都存放在這個目錄中。

UDF(User-Defined-Function)茴晋,用戶自定義函數(shù)對數(shù)據(jù)進行處理陪捷。UDF函數(shù)可以直接應(yīng)用于select語句,對查詢結(jié)構(gòu)做格式化處理后晃跺,再輸出內(nèi)容揩局。自定義UDF需要繼承org.apache.hadoop.hive.ql.UDF。需要實現(xiàn)evaluate函數(shù)掀虎。evaluate函數(shù)支持重載凌盯。

http://blog.csdn.net/dajuezhao/article/details/5753001

spark UDF org.apache.spark.sql.expressions.UserDefinedAggregateFunction

http://spark.apache.org/docs/latest/sql-programming-guide.html#untyped-user-defined-aggregate-functions

Hive 創(chuàng)建名為dual的測試表

create table dual (dummy string);
// 退出hive進入bash
echo 'X' > dual.txt
// 進入hive
load data local inpath '/home/hadoop/dual.txt' overwrite into table daul;

Hive 正則表達(dá)式

http://blog.csdn.net/bitcarmanlee/article/details/51106726

HIVE json格式數(shù)據(jù)的處理

http://www.cnblogs.com/casicyuan/p/4375080.html

5. 常用問題

hadoop多次格式化后,導(dǎo)致datanode啟動不了

http://blog.csdn.net/longzilong216/article/details/20648387

MapReduce任務(wù)運行到running job卡住

http://blog.csdn.net/yang398835/article/details/52205487

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末烹玉,一起剝皮案震驚了整個濱河市驰怎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌二打,老刑警劉巖县忌,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異继效,居然都是意外死亡症杏,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門瑞信,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厉颤,“玉大人,你說我怎么就攤上這事凡简”朴眩” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵秤涩,是天一觀的道長帜乞。 經(jīng)常有香客問我,道長筐眷,這世上最難降的妖魔是什么黎烈? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上怨喘,老公的妹妹穿的比我還像新娘津畸。我一直安慰自己振定,他們只是感情好必怜,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著后频,像睡著了一般梳庆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上卑惜,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天膏执,我揣著相機與錄音,去河邊找鬼露久。 笑死更米,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的毫痕。 我是一名探鬼主播征峦,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼消请!你這毒婦竟也來了栏笆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤臊泰,失蹤者是張志新(化名)和其女友劉穎蛉加,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缸逃,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡针饥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了需频。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丁眼。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖贺辰,靈堂內(nèi)的尸體忽然破棺而出户盯,到底是詐尸還是另有隱情,我是刑警寧澤饲化,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布莽鸭,位于F島的核電站,受9級特大地震影響吃靠,放射性物質(zhì)發(fā)生泄漏硫眨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一巢块、第九天 我趴在偏房一處隱蔽的房頂上張望礁阁。 院中可真熱鬧巧号,春花似錦、人聲如沸姥闭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棚品。三九已至靠欢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間铜跑,已是汗流浹背门怪。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锅纺,地道東北人掷空。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像囤锉,于是被迫代替她去往敵國和親坦弟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容