hadoop-2.5.0,hbase,hive,pig,sqoop,zookeeper 叢集安裝
1. 準備工作
軟體準備:
1) Hadoop: hadoop-2.5.0.tar.gz
2) Jdk: jdk-7u71-linux-x64.tar.gz
3) Hive:apache-hive-0.13.1-bin.tar.gz
4) Hbase:hbase-0.98.8-hadoop2-bin.tar.gz
5) Sqoop:sqoop-1.99.4-bin-hadoop200.tar.gz
6) Zookeeper:zookeeper-3.4.6.tar.gz
7) eclipse:eclipse-SDK-4.3.1-linux-gtk-x86_64.tar.gz
8) Eclipse外掛:hadoop-eclipse-plugin-2.5.0.jar
9) Pig:pig-0.13.0.tar.gz
10) Mysql:MySQL-server-5.5.21-1.linux2.6.x86_64.rpm
MySQL-client-5.5.21-1.linux2.6.x86_64.rpm
MySQL-devel-5.5.21-1.linux2.6.x86_64.rpm
11) Mysql驅動:mysql-connector-java-5.0.3.jar
硬體準備:
物理機器總 共4臺,想配置基於物理機的hadoop叢集中包括 4 個 節點: 1 個 Master , 3 個 Salve , 節點之間區域網連線,可以相互 ping 通
Ip分佈 為
192.168.0.1 hadoop1
192.168.0.2 hadoop2
192.168.0. 3 hadoop3
192.168.0. 4 hadoop4
作業系統為 RedHat 5.4 64bit
Master機器主要配置NameNode和JobTracker的角色, 負責總 管分散式資料和分解任 務 的 執 行;3個Salve機器配置DataNode和TaskTracker的角色, 負責 分散式資料存 儲 以及任 務 的 執 行。
此處省略Linux作業系統的安裝... ...
建立賬戶
使用root登陸 所有機器後,所有的機器都 建立 hadoop 用 戶
useradd hadoop
passwd hadoop
此時 在 /home/ 下就會生成一個hadoop 目錄 ,目 錄 路徑 為 /home/hadoop
建立相關的目錄
定義 需要資料及目 錄 的存放路徑
定義 代 碼及工具 存放的路徑
mkdir -p /home/hadoop/source
mkdir -p /home/hadoop/tools
定義 資料 節 點存放的路徑到跟目 錄 下的hadoop資料夾, 這 裡是資料 節 點存放目 錄 需要有足夠的空 間 存放
mkdir -p /hadoop/hdfs
mkdir -p /hadoop/tmp
mkdir -p /hadoop/log
設定可寫許可權
chmod -R 777 /hadoop
定義 java安裝程式路徑
mkdir -p /usr/java
2. 安裝JDK
1 ,將下 載好的 jdk-7u71-linux-x64.tar.gz通 過 SSH 上 傳到 /usr/java 下
scp -r ./[email protected]:/usr/java
2 , 進入 JDK 安裝目 錄 cd /usr/java 並且 執行 chmod +x jdk-7u71-linux-x64.bin
3 , 執行 ./ jdk-7u71-linux-x64.bin
4 ,配置 環境變數,執行 cd /etc 命令後 執行 vi profile ,在行末尾新增
export JAVA_HOME=/usr/java/jdk1.7.0_71
exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
5 , 執行 chmod +x profile 將其 變成可執行檔案
6 , 執行 source profile 使其配置立即生效
source /etc/profile
7 , 執行 java -version 檢視是否安裝成功
這個步驟所有機器都必須安裝
[[email protected] bin]# java -version
java version "1.6.0_32"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01,mixed mode)
3. 修改主機名
修改主機名,所有節點均一樣配置
1 , 連線到主節點 192.168.0.1 ,修改 network , 執行 vim/etc/sysconfig/network ,修改 HOSTNAME=hadoop1
2 ,修改 hosts 檔案, 執行 cd /etc 命令後 執行 vi hosts ,在行末尾新增 :
192.168.0. 1 hadoop1
192.168.0. 2 hadoop2
192.168.0. 3 hadoop3
192.168.0. 4 hadoop4
3 , 執行 hostname hadoop1
4 , 執行 exit 後重新 連線可看到主機名以修改 OK
其他節點 也修改主機名後新增Host, 或者 host 檔案可以在後面執行 scp 覆蓋操作
4. 配置SSH無密碼登陸
SSH 無密 碼原理簡介 :
首先在 hadoop1 上生成一個金鑰對,包括一個公鑰和一個私鑰,並將公鑰複製到所有的 slave(hadoop2-hadoop4) 上。
然後當 master 通過 SSH 連線 slave 時, slave 就會生成一個隨機數並用 master 的公鑰對隨機數進行加密,併發送給 master 。
最後 master 收到加密數之後再用私鑰解密,並將解密數回傳給 slave , slave 確認解密數無誤之後就允許 master 不輸入密碼進行連線了
2 ,具體步 驟(在root使用者和hadoop使用者登陸情況下執行)
1 、 執行命令 ssh-keygen -trsa 之後一路回車,檢視剛生成的無密碼鑰對: cd .ssh 後執行 ll
2 、把 id_rsa.pub 追加到授權的 key 裡面去。 執行命令 cat~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
3 、修改許可權: 執行 chmod 600~/.ssh/authorized_keys
4 、確保 cat/etc/ssh/sshd_config 中存在如下內容
RSAAuthenticationyes
PubkeyAuthenticationyes
AuthorizedKeysFile .ssh/authorized_keys
如需修改,則在修改後執行重啟 SSH 服務命令使其生效 :service sshd restart
5 、將公 鑰複製到所有的 slave 機器上 :scp ~/.ssh/id_rsa.pub192.168.0.3 : ~/ 然後 輸入 yes ,最後 輸入 slave 機器的密 碼
6 、在 slave 機器上 建立 .ssh 資料夾 :mkdir~/.ssh 然後執行 chmod 700 ~/.ssh (若資料夾以存在則不需要建立)
7 、追加到授權檔案authorized_keys 執行命令 :cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 然後 執行 chmod 600~/.ssh/authorized_keys
8 、重複第 4 步
9 、 驗證命令 : 在 master 機器上 執行 ssh 192.168.0.3 發現主機名由hadoop1 變成 hadoop3 即成功,最後刪除 id_rsa.pub 檔案 :rm -r id_rsa.pub
按照以上步驟分別配置 hadoop1,hadoop2,hadoop3,hadoop4 ,要求每個都可以無密 碼登入
5. HADOOP 安裝
建立目錄
mkdir –p /home/hadoop
cd /home/hadoop
將安裝包複製到該目錄下解壓
tar zxvf hadoop-2.5.0.tar.gz
/etc/profile
配置環境變數: vim /etc/profile
新增
export HADOOP_DEV_HOME=/home/hadoop/hadoop
export PATH=$PATH:$HADOOP_DEV_HOME/bin
export PATH=$PATH:$HADOOP_DEV_HOME/sbin
exportHADOOP_MAPARED_HOME=${HADOOP_DEV_HOME}
export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
export YARN_HOME=${HADOOP_DEV_HOME}
exportHADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
exportHDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
exportYARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
建立並配置hadoop-env.sh
vim/usr/hadoop/hadoop-2.0.0-alpha/etc/hadoop/hadoop-env.sh
在末尾新增 export JAVA_HOME=/usr/java/jdk1.7.0_71
core-site.xml
在 configuration 節點裡面新增屬性
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
<description>A base for othertemporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.0.1:9000</value>
</property>
新增 httpfs 的選項
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>192.168.0.1</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
slave配置
vim /home/hadoop/hadoop/etc/hadoop/slaves
新增 slave 的 IP
192.168.0. 2
192.168.0. 3
192.168.0. 4
配置hdfs-site.xml
vim/home/hadoop/hadoop/etc/hadoop/hdfs-site.xml
新增節點
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.federation.nameservice.id</name>
<value>ns1</value>
</property>
<property>
<name>dfs.namenode.backup.address.ns1</name>
<value>192.168.0.1:50100</value>
</property>
<property>
<name>dfs.namenode.backup.http-address.ns1</name>
<value>192.168.0.1:50105</value>
</property>
<property>
<name>dfs.federation.nameservices</name>
<value>ns1</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1</name>
<value>192.168.0.1:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns2</name>
<value>192.168.0.1:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1</name>
<value>192.168.0.1:23001</value>
</property>
<property>
<name>dfs.namenode.http-address.ns2</name>
<value>192.168.0.1:13001</value>
</property>
<property>
<name>dfs.dataname.data.dir</name>
<value>file:/hadoop/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.0.1:23002</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.0.1:23002</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.0.1:23003</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.0.1:23003</value>
</property>
配置yarn-site.xml
新增節點
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.0.1:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.0.1:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.0.1:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.0.1:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.0.1:18141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
配置httpfs-site.xml
同步程式碼到其他機器
1.同步配置代 碼
先在 slaves 的機器上也創 建
mkdir -p /home/hadoop/source
部署hadoop程式碼 , 創 建 軟連線 ,然後只要同步修改 過 的etc/hadoop下的配置檔案即可
2.同步 /etc/profile
3.同步 /etc/hosts
scp -r /etc/[email protected]:/etc/profile
scp -r /etc/hosts [email protected]:/etc/hosts
其他機器以此操作
Hadoop啟動
格式化叢集
hadoop namenode -format -clusteridclustername
啟動hdfs
start-dfs.sh
啟動Yarn
start-yarn.sh
啟動httpfs
httpfs.sh start
使得對外 可以提高 http 的restful介面服 務
測試
安裝結果驗證
驗證hdfs
在各臺機器執行 jps 看程序 是否都已 經啟動 了
[[email protected] hadoop]# jps
7396 NameNode
24834 Bootstrap
7594 SecondaryNameNode
7681 ResourceManager
32261 Jps
[[email protected] ~]# jps
8966 Jps
31822 DataNode
31935 NodeManager
程序啟動正常
驗證是否可以登 陸
hadoop fs -ls hdfs://192.168.0.1:9000/
hadoop fs -mkdir hdfs://192.168.0.1:9000/testfolder
hadoop fs -copyFromLocal ./xxxxhdfs://192.168.0.1:9000/testfolder
hadoop fs -ls hdfs://192.168.0.1:9000/testfolder
6. zookeeper安裝
將zookeeper-3.4.6.tar.gz 複製到/home/hadoop目錄下
Chmod 777 zookeeper-3.4.6.tar.gz
tar zxvf zookeeper-3.4.6.tar.gz
mv zookeeper-3.4.6 zookeeper
建立資料目錄
mkdir /home/hadoop/zookeeper/data
修改配置檔案
cd zookeeper/conf
cp zoo_sample.cfg zoo.cfg
編輯配置檔案
vi zoo.cfg
# 修改資料目錄dataDir為以下值
dataDir=/home/hadoop/zookeeper/data
# 新增以下段落
server.1=192.168.0.1:2886:3886
server.2=192.168.0.2:2887:3887
server.3=192.168.0.3:2888:3888
server.4=192.168.0.4:2889:3889
server.id=host:port:port標識不同的ZooKeeper伺服器
需要在每個伺服器的資料目錄中(這邊為/home/hadoop/zookeeper/data)建立myid檔案,檔案的內容為以上對應的server.id中的id
vi /data/zookeeper/myid
# 值為各個伺服器對應的server.id中的id
id
e. 配置環境變數並啟動ZooKeeper
vi /etc/profile
export ZOOKEEPER_HOME=/home/hadoop/zookeeper
PATH=$PATH:$ZOOKEEPER_HOME/bin
/在剩下的伺服器中做相同的zookeeper操作,需要在每一臺機器上都啟動
zkServer.sh start
f. 驗證
jps 檢視多了QuorumpeerMain 程序
zkCli.sh -server 192.168.0.2:2181
[zk: 192.168.0.2:2181(CONNECTED) 0] help
[zk: 192.168.0.2:2181(CONNECTED) 0] create/user 123456
[zk: 192.168.0.2:2181(CONNECTED) 0] get/user
7. Hbase 安裝
將hbase-0.98.8-hadoop2-bin.tar.gz 複製到/home/hadoop/
解壓:tar zxvf hbase-0.98.8-hadoop2-bin.tar.gz
mv hbase-0.98.8-hadoop2 /home/hadoop/hbase
cd hbase/conf
編輯配置檔案hbase-site.xml
vi hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop1:9000/hbase</value>
<description>區域伺服器使用儲存HBase資料庫資料的目錄</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>
指定HBase執行的模式: false:單機模式或者為分散式模式 true: 全分佈模式
</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop1, hadoop2, hadoop3, hadoop4</value>
<description>ZooKeeper叢集伺服器的位置</description>
</property>
</configuration>
編輯配置檔案regionservers
vi regionservers
hadoop1
hadoop2
hadoop3
hadoop4
設定環境變數hbase-env.sh
vi hbase-evn.sh
export HBASE_MANAGES_ZK=false
使用獨立的ZooKeeper時需要修改HBASE_MANAGES_ZK值為false,為不使用預設ZooKeeper例項。
啟動服務
需要先啟動ZooKeeper(已經啟動)和hdfs檔案系統
注意:以下兩個命令只需要在hadoop1下啟動
start-hbase.sh
jps命令檢視多了 HRegionServer
修改系統時間使系統時間同步,負責HRegionServer程序會過一會死掉。
/etc/rc.local
末尾加入一行,同步主節點時間,主節點不用配:
ntpdate 192.168.0.2
f測試
hbase shell
hbase(main):001:0> status
hbase(main):001:0> create ‘student’,’name’,’age’
hbase(main):001:0> desc ‘student’
hbase(main):001:0> put ‘student’,’1’,’name’,’mapengbo’
hbase(main):001:0> put ‘student’,’1’,’age,’26’
hbase(main):001:0> get ‘student’,’1’,
8. Mysql安裝
mkdir –p /home/tools
將MySQL-server-5.5.21-1.linux2.6.x86_64.rpm,MySQL-client-5.5.21-1.linux2.6.x86_64.rpm
複製到/home/tools下
安裝服務端:
rpm -ivhMySQL-server-5.1.7-0.i386.rpm
安裝客戶端:
rpm -ivhMySQL-client-5.1.7-0.i386.rpm
cp/usr/share/mysql/my-medium.cnf /etc/my.cnf
1、資料庫目錄
/var/lib/mysql/
2、配置檔案
/usr/share/mysql(mysql.server命令及配置檔案)
3、相關命令
/usr/bin(mysqladmin mysqldump等命令)
4、啟動指令碼
/etc/rc.d/init.d/(啟動指令碼檔案mysql的目錄)
3、自動啟動(預設自動新增到自啟動,不用操作)
1)察看mysql是否在自動啟動列表中
[[email protected] local]# /sbin/chkconfig--list | grep mysql
2)把MySQL新增到你係統的啟動服務組裡面去
[[email protected]]# /sbin/chkconfig --add mysql
3)把MySQL從啟動服務組裡面刪除。
[[email protected]]# /sbin/chkconfig --del mysql
登入MySQL的命令是mysql, mysql 的使用語法如下:
mysql [-uusername] [-h host] [-p[password]] [dbname]
username 與 password 分別是 MySQL 的使用者名稱與密碼,mysql的初始管理帳號是root,沒有密碼,注意:這個root使用者不是Linux的系統使用者。MySQL預設使用者是root,由於初始沒有密碼,第一次進時只需鍵入mysql即可
增加了密碼後的登入格式如下:
mysql -u root -p
Enter password: (輸入密碼)
其中-u後跟的是使用者名稱,-p要求輸入密碼,回車後在輸入密碼處輸入密碼。
9. hive安裝
將apache-hive-0.13.1-bin.tar.gz 複製到/home/hadoop/
解壓:tar zxvf apache-hive-0.13.1-bin.tar.gz
mv apache-hive-0.13.1-bin /home/hadoop/hive
cp mysql-connector-java-5.0.3.jar /home/hadoop/hive/lib
進入解壓後的hive目錄,進入conf
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
配置hive-env.sh
HADOOP_HOME=/home/hadoop/hadoop
export HIVE_CONF_DIR=/home/hadoop/hive/conf
export HIVE_AUX_JARS_PATH=/home/hadoop/hive/lib
儲存退出
source /hive-env.sh
hdfs dfs -mkdir -p /usr/hive/warehouse
hdfsdfs -mkdir -p /usr/hive/tmp
hdfsdfs -mkdir -p /usr/hive/log
hdfsdfs -chmod g+w /usr/hive/warehouse
hdfsdfs -chmod g+w /usr/hive/tmp
hdfsdfs -chmod g+w /usr/hive/log
cp hive-default.xml.template hive-site.xml
vi hive-site.xml
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://node0:9000/usr/hive/warehouse</value>
(這裡就與前面的hdfsdfs -mkdir -p /usr/hive/warehouse相對應,其中node0指的是筆者的NameNode的hostname;)
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>hdfs://node0:9000/usr/hive/warehouse</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/hive/log</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNoExist=true</value>
</property>
javax.jdo.option.ConnectionURL這個引數使用來設定元資料連線字串
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectorUserName</name>
<value>hive</value>
</property>
這個javax.jdo.option.ConnectionUserName
是用來設定hive存放的元資料的資料庫(這裡是mysql資料庫)的使用者名稱稱的。
而這個‘hive‘可以根據使用者自己的需要來自行設定
--------------------------------------
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
這個javax.jdo.option.ConnetionPassword是用來設定,
使用者登入資料庫的時候需要輸入的密碼的。
修改屬性名稱hive.metastore.ds.retry.attempts 為hive. hmshandler.retry.attempts
修改屬性名稱hive.metastore.ds.retry.interval 為hive. hmshandler.retry. interval
負責會報錯:hive error resoled "DEPRECATED: hive.metastore.ds.retry.* nolonger has any effect. Use hive.hmshandler.retry.* instead"
儲存退出。
hbase的lib下找到下面4個檔案拷貝到hive的lib目錄下。
protobuf-java-2.5.0.jar
hbase-client-0.96.2-hadoop2.jar
hbase-common-0.96.2-hadoop2.jar
guava-12.0.1.jar
啟動之前先要建立hive元資料存放的路徑檔案:
hdfsdfs -mkdir -p /hive/scratchdir
hdfsdfs -mkdir /tmp
hdfsdfs -ls /hive
hdfsdfs -chmod -R g+w /hive/
hdfsdfs -chmod -R g+w /tmp
建立hive連線的使用者,和hive存放元資料的資料庫,如下:
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%'IDENTIFIED BY '123456' ;
mysql> create database hive defaultcharacter set latin1; //字符集必須是latian1,如果是utf8則很多hive元資料表無法建立。
具體的啟動命令:
./hive
hive執行測試:
進入hive客戶端,執行showtable;查看錶的情況。
執行:
建立本地表,非hbase對應表
create table test(key int,amount string) rowformat delimited fields
terminated by '\t' lines terminated by '\n'stored as textfile;
load data local inpath '/usr/test.txt'overwrite into table test;
vi /usr/test.txt
1,abd
2,ddf
執行:
來創建於hbase關聯的表,這樣在hbaseshell下也能看到,兩筆新增資料都能實時看到。
CREATE TABLE hivetest(key int, val string)STORED BY
'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITHSERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" ="hivetest");
CREATE EXTERNAL TABLE hive_award(keystring, productid int,matchid string, rank string, tourneyid string, useridbigint,gameid int,gold int,loginid string,nick string,plat string) STORED BY'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES("hbase.columns.mapping" = ":key,info:MPID,info:MatchID,info:Rank,info:TourneyID,info:UserId,info:gameID,info:gold,info:loginId,info:nickName,info:platform")TBLPROPERTIES("hbase.table.name" = "award");
注意:1.如果要insert與hbase整合的表,不能像本地表一樣load,需要利用已有的表進行,
如insertoverwrite table hivetest select * from test;
其中test的語句(createtable test4(key int,val string) row format delimited fields terminated by '\t'lines terminated by '\n' stored as textfile; ),
注意型別要一致,否則用insertoverwrite table hivetest select * from test; 導不進去資料
2.在hive中的 修改能同步反應到hbase中,但是如果在hbase中對新的列做了資料修改,
則不會反應到hive中,因為hive的原資料檔案並沒有更新。
10. Pig安裝
將pig-0.13.0.tar.gz 複製到/home/hadoop/
解壓:tar zxvf pig-0.13.0.tar.gz
mv pig-0.13.0 /home/hadoop/pig
vi /etc/profile
export PIG_HOME=/home/hadoop/pig
export PIG_CLASSPATH=/home/hadoop/hadoop/conf/
export PATH=$PIG_HOME/bin:$PATH
Pig有兩種模式:
第一種是Local mode,也就是本地模式,這種模式下Pig執行在一個JVM裡,訪問的是本地的檔案系統,只適合於小規模資料集,一般是用來體驗Pig。而且,它並沒有用到Hadoop的Local runner,Pig把查詢轉換為物理的Plan,然後自己去執行。在終端下輸入% pig -x local就可以進入Local模式了。
第二種Hadoop模式,這種模式下,Pig才真正的把查詢轉換為相應的MapReduceJobs,並提交到Hadoop叢集去執行,叢集可以是真實的分散式也可以是偽分散式。
cd /home/hadoop/pig/bin
./pig
Grunt>ls /
列出hdfs檔案
讀取hdfs檔案按“,”分割tables = LOAD '/home/test.txt' USING PigStorage(',') AS (carno,date, addno);
排序ordered = ORDER tables BY carno, date;
取前10行subtables = LIMIT ordered 10;
在控制檯輸出DUMP subtables;
檔案輸出STORE subtables INTO '/Results';
http://blog.csdn.net/poisonchry/article/details/31486315
11. Sqoop安裝
將sqoop-1.99.4-bin-hadoop200.tar.gz複製到/home/hadoop/
解壓:tar zxvf sqoop-1.99.4-bin-hadoop200.tar.gz
mv sqoop-1.99.4-bin-hadoop200 /home/hadoop/sqoop
vi /etc/profile
export SQOOP_HOME=/home/hadoop/sqoop
export PATH=$SQOOP_HOME/bin:$PATH
export CATALINA_HOME=$SQOOP_HOME/server
export LOGDIR=$SQOOP_HOME/logs
儲存退出即時生效:
source /etc/profile
修改sqoop配置:
vi /home/hadoop/sqoop/server/conf/sqoop.properties
修改指向我的hadoop安裝目錄
org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/home/hadoop/hadoop/
#把hadoop目錄下的jar包都引進來
vi /home/hadoop/sqoop/server/conf/catalina.properties
common.loader=/home/hadoop/hadoop/share/hadoop/common/*.jar,/home/hadoop/hadoop/share/hadoop/common/lib/*.jar,/home/hadoop/hadoop/share/hadoop/hdfs/*.jar,/home/hadoop/hadoop/share/hadoop/hdfs/lib/*.jar,/home/hadoop/hadoop/share/hadoop/mapreduce/*.jar,/home/hadoop/hadoop/share/hadoop/mapreduce/lib/*.jar,/home/hadoop/hadoop/share/hadoop/tools/*.jar,/home/hadoop/hadoop/share/hadoop/tools/lib/*.jar,/home/hadoop/hadoop/share/hadoop/yarn/*.jar,/home/hadoop/hadoop/share/hadoop/yarn/lib/*.jar,/home/hadoop/hadoop/share/hadoop/httpfs/tomcat/lib/*.jar
在/home/hadoop/sqoop/lib 加入mysql驅動包
mysql-connector-java-5.0.3.jar
啟動/停止sqoop200
./sqoop.shserver start/stop
檢視啟動日誌:
cd /home/hadoop/sqoop
vim catalina.out
進入客戶端互動目錄
./sqoop.sh client
檢視版本
show version –all
顯示聯結器:show connector –all
建立資料庫連線:create connection --cid 1
建立匯入任務 create job --xid 1 --type import
檢視匯入狀態:status job --jid 1
12. eclipse安裝
cp eclipse-SDK-4.3.1-linux-gtk-x86_64.tar.gz /home/hadoop/tools
tar –zxvf eclipse-SDK-4.3.1-linux-gtk-x86_64.tar.gz
將hadoop-eclipse-plugin-2.5.0.jar 複製到/home/hadoop/tools/eclipse/plugins/
接下來在桌面新增eclipse的啟動快捷方式
在linux桌面空白處,點選滑鼠右鍵,彈出一個對話方塊,選擇“create launcher”,--“建立快捷方式“對話方塊---名字:eclipse –命令:/home/hadoop/tools/eclipse/eclipse 瀏覽到安裝eclipse目錄,找到eclipse啟動程式---點選圖示到這裡我們已經配置成功了.
進入Window-->Preference選擇 “Hadoop Map/Reduce”配置根目錄:
進入Window-->OpenPerspective-->other-->Map/Reduce開啟Map/Reduce視窗
開啟Map/Reduce View,右鍵,選擇Newhadoop location
配置location
注意:MR Master和DFS Master配置必須和mapred-site.xml和core-site.xml等配置檔案一致
新建Mapreduce專案
建立MapReduce程式
編寫WordCount程式測試外掛使用:
在MapReduce工程下新建WordCount.java程式
將程式放在hadoop叢集上執行:右鍵-->Runas-->Run on Hadoop,最終的輸出結果會在HDFS相應的資料夾下顯示。