日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

hadoop2.4.2集群搭建及hive与mysql集成文档记录

發布時間:2025/3/15 数据库 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hadoop2.4.2集群搭建及hive与mysql集成文档记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.修改Linux主機名
2.修改IP
3.修改主機名和IP的映射關系
######注意######如果你們公司是租用的服務器或是使用的云主機(如華為用主機、阿里云主機等)
/etc/hosts里面要配置的是內網IP地址和主機名的映射關系
4.關閉防火墻
5.ssh免登陸
6.安裝JDK,配置環境變量等


集群規劃:
主機名 IP 安裝的軟件 運行的進程
weekend01 192.168.1.201 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
weekend02 192.168.1.202 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
weekend03 192.168.1.203 jdk、hadoop ResourceManager
weekend04 192.168.1.204 jdk、hadoop ResourceManager
weekend05 192.168.1.205 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
weekend06 192.168.1.206 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
weekend07 192.168.1.207 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain

說明:
1.在hadoop2.0中通常由兩個NameNode組成,一個處于active狀態,另一個處于standby狀態。Active NameNode對外提供服務,而Standby NameNode則不對外提供服務,僅同步active namenode的狀態,以便能夠在它失敗時快速進行切換。
hadoop2.0官方提供了兩種HDFS HA的解決方案,一種是NFS,另一種是QJM。這里我們使用簡單的QJM。在該方案中,主備NameNode之間通過一組JournalNode同步元數據信息,一條數據只要成功寫入多數JournalNode即認為寫入成功。通常配置奇數個JournalNode
這里還配置了一個zookeeper集群,用于ZKFC(DFSZKFailoverController)故障轉移,當Active NameNode掛掉了,會自動切換Standby NameNode為standby狀態
2.hadoop-2.2.0中依然存在一個問題,就是ResourceManager只有一個,存在單點故障,hadoop-2.4.1解決了這個問題,有兩個ResourceManager,一個是Active,一個是Standby,狀態由zookeeper進行協調
安裝步驟:
1.安裝配置zooekeeper集群(在weekend05上)
1.1解壓
tar -zxvf zookeeper-3.4.5.tar.gz -C /weekend/
1.2修改配置
cd /weekend/zookeeper-3.4.5/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改:dataDir=/weekend/zookeeper-3.4.5/tmp
在最后添加:
server.1=weekend05:2888:3888
server.2=weekend06:2888:3888
server.3=weekend07:2888:3888
保存退出
然后創建一個tmp文件夾
mkdir /weekend/zookeeper-3.4.5/tmp
再創建一個空文件
touch /weekend/zookeeper-3.4.5/tmp/myid
最后向該文件寫入ID
echo 1 > /weekend/zookeeper-3.4.5/tmp/myid
1.3將配置好的zookeeper拷貝到其他節點(首先分別在weekend06、weekend07根目錄下創建一個weekend目錄:mkdir /weekend)
scp -r /weekend/zookeeper-3.4.5/ weekend06:/weekend/
scp -r /weekend/zookeeper-3.4.5/ weekend07:/weekend/

注意:修改weekend06、weekend07對應/weekend/zookeeper-3.4.5/tmp/myid內容
weekend06:
echo 2 > /weekend/zookeeper-3.4.5/tmp/myid
weekend07:
echo 3 > /weekend/zookeeper-3.4.5/tmp/myid

2.安裝配置hadoop集群(在weekend01上操作)
2.1解壓
tar -zxvf hadoop-2.4.1.tar.gz -C /weekend/
2.2配置HDFS(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目錄下)
#將hadoop添加到環境變量中
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_55
export HADOOP_HOME=/weekend/hadoop-2.4.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

#hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下
cd /home/hadoop/app/hadoop-2.4.1/etc/hadoop

2.2.1修改hadoo-env.sh
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_55

2.2.2修改core-site.xml
<configuration>
<!-- 指定hdfs的nameservice為ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1/</value>
</property>
<!-- 指定hadoop臨時目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/hadoop-2.4.1/tmp</value>
</property>

<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>weekend05:2181,weekend06:2181,weekend07:2181</value>
</property>
</configuration>

2.2.3修改hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice為ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有兩個NameNode,分別是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>weekend01:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>weekend01:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>weekend02:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>weekend02:50070</value>
</property>
<!-- 指定NameNode的元數據在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://weekend05:8485;weekend06:8485;weekend07:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盤存放數據的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/app/hadoop-2.4.1/journaldata</value>
</property>
<!-- 開啟NameNode失敗自動切換 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失敗自動切換實現方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔離機制方法,多個機制用換行分割,即每個機制暫用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用sshfence隔離機制時需要ssh免登陸 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔離機制超時時間 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>

2.2.4修改mapred-site.xml
<configuration>
<!-- 指定mr框架為yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

2.2.5修改yarn-site.xml
<configuration>
<!-- 開啟RM高可用 -->
<property>
? <name>yarn.resourcemanager.ha.enabled</name>
? <value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
? <name>yarn.resourcemanager.cluster-id</name>
? <value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
? <name>yarn.resourcemanager.ha.rm-ids</name>
? <value>rm1,rm2</value>
</property>
<!-- 分別指定RM的地址 -->
<property>
? <name>yarn.resourcemanager.hostname.rm1</name>
? <value>weekend03</value>
</property>
<property>
? <name>yarn.resourcemanager.hostname.rm2</name>
? <value>weekend04</value>
</property>
<!-- 指定zk集群地址 -->
<property>
? <name>yarn.resourcemanager.zk-address</name>
? <value>weekend05:2181,weekend06:2181,weekend07:2181</value>
</property>
<property>
? <name>yarn.nodemanager.aux-services</name>
? <value>mapreduce_shuffle</value>
</property>
</configuration>


2.2.6修改slaves(slaves是指定子節點的位置,因為要在weekend01上啟動HDFS、在weekend03啟動yarn,所以weekend01上的slaves文件指定的是datanode的位置,weekend03上的slaves文件指定的是nodemanager的位置)
weekend05
weekend06
weekend07


2.2.7配置免密碼登陸
#首先要配置weekend01到weekend02、weekend03、weekend04、weekend05、weekend06、weekend07的免密碼登陸
#在weekend01上生產一對鑰匙
ssh-keygen -t rsa
#將公鑰拷貝到其他節點,包括自己
ssh-coyp-id weekend01
ssh-coyp-id weekend02
ssh-coyp-id weekend03
ssh-coyp-id weekend04
ssh-coyp-id weekend05
ssh-coyp-id weekend06
ssh-coyp-id weekend07
#配置weekend03到weekend04、weekend05、weekend06、weekend07的免密碼登陸
#在weekend03上生產一對鑰匙
ssh-keygen -t rsa
#將公鑰拷貝到其他節點
ssh-coyp-id weekend04
ssh-coyp-id weekend05
ssh-coyp-id weekend06
ssh-coyp-id weekend07
#注意:兩個namenode之間要配置ssh免密碼登陸,別忘了配置weekend02到weekend01的免登陸
在weekend02上生產一對鑰匙
ssh-keygen -t rsa
ssh-coyp-id -i weekend01

2.4將配置好的hadoop拷貝到其他節點
scp -r /weekend/ weekend02:/
scp -r /weekend/ weekend03:/
scp -r /weekend/hadoop-2.4.1/ hadoop@weekend04:/weekend/
scp -r /weekend/hadoop-2.4.1/ hadoop@weekend05:/weekend/
scp -r /weekend/hadoop-2.4.1/ hadoop@weekend06:/weekend/
scp -r /weekend/hadoop-2.4.1/ hadoop@weekend07:/weekend/
###注意:嚴格按照下面的步驟
2.5啟動zookeeper集群(分別在weekend05、weekend06、tcast07上啟動zk)
cd /weekend/zookeeper-3.4.5/bin/
./zkServer.sh start
#查看狀態:一個leader,兩個follower
./zkServer.sh status

2.6啟動journalnode(分別在在weekend05、weekend06、tcast07上執行)
cd /weekend/hadoop-2.4.1
sbin/hadoop-daemon.sh start journalnode
#運行jps命令檢驗,weekend05、weekend06、weekend07上多了JournalNode進程

2.7格式化HDFS
#在weekend01上執行命令:
hdfs namenode -format
#格式化后會在根據core-site.xml中的hadoop.tmp.dir配置生成個文件,這里我配置的是/weekend/hadoop-2.4.1/tmp,然后將/weekend/hadoop-2.4.1/tmp拷貝到weekend02的/weekend/hadoop-2.4.1/下。
scp -r tmp/ weekend02:/home/hadoop/app/hadoop-2.4.1/
##也可以這樣,建議hdfs namenode -bootstrapStandby

2.8格式化ZKFC(在weekend01上執行即可)
hdfs zkfc -formatZK

2.9啟動HDFS(在weekend01上執行)
sbin/start-dfs.sh


2.10啟動YARN(#####注意#####:是在weekend03上執行start-yarn.sh,把namenode和resourcemanager分開是因為性能問題,因為他們都要占用大量資源,所以把他們分開了,他們分開了就要分別在不同的機器上啟動)
sbin/start-yarn.sh



到此,hadoop-2.4.1配置完畢,可以統計瀏覽器訪問:
http://192.168.1.201:50070
NameNode 'weekend01:9000' (active)
http://192.168.1.202:50070
NameNode 'weekend02:9000' (standby)

驗證HDFS HA
首先向hdfs上傳一個文件
hadoop fs -put /etc/profile /profile
hadoop fs -ls /
然后再kill掉active的NameNode
kill -9 <pid of NN>
通過瀏覽器訪問:http://192.168.1.202:50070
NameNode 'weekend02:9000' (active)
這個時候weekend02上的NameNode變成了active
在執行命令:
hadoop fs -ls /
-rw-r--r-- ? 3 root supergroup ? ? ? 1926 2014-02-06 15:36 /profile
剛才上傳的文件依然存在!!!
手動啟動那個掛掉的NameNode
sbin/hadoop-daemon.sh start namenode
通過瀏覽器訪問:http://192.168.1.201:50070
NameNode 'weekend01:9000' (standby)

驗證YARN:
運行一下hadoop提供的demo中的WordCount程序:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /profile /out

OK,大功告成!!!





測試集群工作狀態的一些指令 :
bin/hdfs dfsadmin -report 查看hdfs的各節點狀態信息




bin/hdfs haadmin -getServiceState nn1 獲取一個namenode節點的HA狀態


sbin/hadoop-daemon.sh start namenode ?單獨啟動一個namenode進程




./hadoop-daemon.sh start zkfc ? 單獨啟動一個zkfc進程



(hive安裝過程中的問題解決命令{與mysql集成})




yum remove mysql-libs ?刪除linux自帶的mysql lib相關文件


?卸載mysql?
rpm -qa|grep -i mysql?
rpm -ev MySQL-server-4.0.14-0 MySQL-client-4.0.14-0?
卸載后/var/lib/mysql中的數據及/etc/my.cnf不會刪除,如果確定沒用后就手工刪除?
rm -f /etc/my.cnf?
rm -rf /var/lib/mysql


安裝mysql?
rpm -ivh 分別接mysql的服務端和客戶端安裝(rpm包)


授權
mysql> grant all on hive.* to 'root'@'mpc1' identified by 'root';






相關調試命令
./hive -hiveconf hive.root.logger=DEBUG,console


hive> create table t_order(id int,name String,rongliang String,price double)
? ? > row format delimited
? ? > fields terminated by '\t'
? ? > ;?
hive> load data local inpath '/home/hadoop/hivetestdata/xxx.data' into table t_order;
? ? ? ? ? ?load data inpath============================================;


hive> create external table t_order_ex(id int,name String,rongliang String,price double)
? ? > row format delimited fields terminated by '\t'
? ? > location '/hive_ext';
hive> create table order_simple ??
? ? > as
? ? > select id,name,price from table t_order
? ? > ;




hive> create table t_order_pt(id int,name String,rongliang String,price double)
? ? > partitioned by (month String)
? ? > row format delimited fields terminated by '\t';


hive> load data local inpath '/home/hadoop/hivetestdata/xxx.data' into table t_order_pt partition(month='201401');


hive> select count(*) from t_order_pt where month='201401';

總結

以上是生活随笔為你收集整理的hadoop2.4.2集群搭建及hive与mysql集成文档记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。