集群上時間同步:sudo ntpdate time.nist.gov
hadoop
開源軟件,可靠的、分布式、可伸縮的。
大數據
去IOE
IBM //ibm小型機.
Oracle //oracle數據庫服務器 RAC
EMC //EMC共享存儲設備。
Cluster
集群。
1T = 1024G 1P = 1024T 1E = 1024P 1Z = 1024E 1Y = 1024Z 1N = 1024Y
海量數據
PB.
RAID 冗余 數據的交互方式
磁盤陣列。
大數據解決了兩個問題
1.存儲
分布式存儲
2.計算
分布式計算
分布式
由分布在不同主機上的進程協同在一起,才能構成整個應用。
B/S
Browser / http server:瘦客戶端.
failure over //容災(硬件故障) fault over //容錯(軟件故障)
雲計算
1.服務。
3.虛擬化.
大數據的四個V特征
1.volume //體量大
2.variety //樣式多.
結構化數據:關系型數據庫里的數據
半結構化數據:excel
非結構化數據:文本
3.velocity //速度快
4.valueless //價值密度低
hadoop四個模塊
1.common
2.hdfs 映射和化簡
3.hadoop yarn
4.hadooop mapreduce(mr)
安裝hadoop
1.安裝jdk
a)下載jdk-8u65-linux-x64.tar.gz(不用rpm文件,它按照時是打散的)
b)tar開
$>su centos ; cd ~
$>mkdir downloads
$>cp /mnt/hdfs/downloads/bigdata/jdk-8u65-linux-x64.tar.gz ~/downlooads
$>tar -xzvf jdk-8u65-linux-x64.tar.gz
c)創建/soft文件夾
$>sudo mkdir /soft
$>sudo chown centos:centos /soft
d)移動tar開的文件到/soft下
$>mv ~/downloads/jdk-1.8.0_65 /soft/
e)創建符號連接
$>ln -s /soft/jdk-1.8.0_65 /soft/jdk
f)驗證jdk安裝是否成功
$>cd /soft/jdk/bin
$>./java -version
centos配置環境變量
1.編輯/etc/profile
$>sudo nano /etc/profile
...
export JAVA_HOME=/soft/jdk //導入export
export PATH=$PATH:$JAVA_HOME/bin //:linux的環境變量分隔符
2.使環境變量即刻生效
$>source /etc/profile
3.進入任意目錄下,測試是否ok
$>cd ~
$>java -version
安裝hadoop
1.安裝hadoop
a)下載hadoop-2.7.3.tar.gz
b)tar開
$>su centos ; cd ~
$>cp /mnt/hdfs/downloads/bigdata/hadoop-2.7.3.tar.gz ~/downloads
$>tar -xzvf hadoop-2.7.3.tar.gz
c)無
d)移動tar開的文件到/soft下
$>mv ~/downloads/hadoop-2.7.3 /soft/
e)創建符號連接
$>ln -s /soft/hadoop-2.7.3 /soft/hadoop
f)驗證jdk安裝是否成功
$>cd /soft/hadoop/bin
$>./hadoop version
2.配置hadoop環境變量
$>sudo nano /etc/profile
...
export JAVA_HOME=/soft/jdk
exprot PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/soft/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
3.生效
$>source /etc/profile
4、hdfs
/soft/hadoop/bin/hdfs hdfs-->是操作hadoop文件系統的執行文件
hdfs ->dfs->-ls /(一級一級的子命令)列出了centos的根目錄下的東西
配置hadoop
1.standalone(local)本地模式(用的就是本地操作系統的文件系統)
nothing !
不需要啟用單獨的hadoop進程。
2.Pseudodistributed mode
偽分布模式。
a)進入${HADOOP_HOME}/etc/hadoop目錄
b)編輯core-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
c)編輯hdfs-site.xml --》(replication)副本,偽分布模式只有一個節點,只能有一個副本(也可以說沒有副本,只有自身),所以值為1
<?xml version="1.0"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
d)編輯mapred-site.xml framework 框架,yarn
注意:cp mapred-site.xml.template mapred-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
e)編輯yarn-site.xml --》resourcemanager.hostname資源管理器主機名 ,ux-services輔助服務
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
文件件.d是目錄,文件d是daemon,是守護進程即服務
f)配置SSH
1)檢查是否安裝了ssh相關軟件包(openssh-server + openssh-clients + openssh)
$yum list installed | grep ssh
2)檢查是否啟動了sshd進程(sshd進程在openssh-server軟件包中,必須在服務器端,ssh命令在openssh-client軟件包中,安裝在客戶端)
$>ps -Af | grep sshd
3)在client側生成公私秘鑰對(生成秘鑰對的命令是ssh-keygen,在openssh軟件包中)。
(rsa是算法,不可逆的;-P(密碼是空的)‘’,無內容 -f:是把生成秘鑰對放在哪個文件夾下)
$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
4)生成~/.ssh文件夾(存放秘鑰的地方),里面有id_rsa(私鑰) + id_rsa.pub(公鑰)
5)追加公鑰到~/.ssh/authorized_keys(認證的keys)文件中(文件名、位置固定)
$>cd ~/.ssh
$>cat id_rsa.pub >> authorized_keys
6)修改authorized_keys的權限為644.(只有自己具有寫權限。所屬組和其他人都不能具有寫權限)
$>chmod 644 authorized_keys
7)測試
$>ssh localhost
hadoop
1.獨立模式(standalone|local)
nothing!
本地文件系統。
不需要啟用單獨進程。
2.pseudo-distributed(偽分布模式)
等同於完全分布式,只有一個節點。
SSH: //(Socket),
//public + private
//server : sshd ps -Af | grep sshd
//clint : ssh
//ssh-keygen:生成公私秘鑰。
//authorized_keys 需要使用644
//ssh 192.168.231.201 yes
[配置文件]
core-site.xml //fs.defaultFS=hdfs://localhost/
hdfs-site.xml //replication=1
mapred-site.xml //
yarn-site.xml //
3.full distributed(完全分布式)
處理不能啟動五個進程的方法
1.rm -rf /tmp/*
2.
讓命令行提示符顯式完整路徑
1.編輯profile文件,添加環境變量PS1
[/etc/profile] // \u是用戶,@是固定的,\h是主機;‘pwd’:當前路徑,‘’是強行命令解析;
export PS1='[\u@\h `pwd`]\$' //注意pwd包括的是反引號``
2.source
$>source /etc/profile
配置hadoop,使用符號連接的方式,讓三種配置形態共存。
1.在/soft/hadoop/etc下創建三個配置目錄,內容等同於hadoop目錄
${hadoop_home}/etc/local
${hadoop_home}/etc/pesudo
${hadoop_home}/etc/full
2.創建符號連接
$>ln -s
3.對hdfs進行格式化
$>hadoop namenode -format
4.修改hadoop配置文件,手動指定JAVA_HOME環境變量(env是環境意思)
[${hadoop_home}/etc/hadoop/hadoop-env.sh]
...
export JAVA_HOME=/soft/jdk
...
5.啟動hadoop的所有進程(start-all.sh是一個可執行文件,在/sort/hadoop/sbin/下面)
$>start-all.sh
6.啟動完成后,出現以下5個進程
$>jps
33702 NameNode //名稱節點是目錄
33792 DataNode //數據節點
33954 SecondaryNameNode //輔助名稱節點
29041 ResourceManager
34191 NodeManager
7.查看hdfs文件系統
$>hdfs dfs -ls /
8.創建目錄 -p:parent父目錄
$>hdfs dfs -mkdir -p /user/centos/hadoop
9.通過webui查看hadoop的文件系統
http://localhost:50070/
或者:hdfs dfs -ls /
10.停止hadoop所有進程
$>stop-all.sh
11.centos防火牆操作
[cnetos 6.5之前的版本]
$>sudo service firewalld stop //停止服務
$>sudo service firewalld start //啟動服務
$>sudo service firewalld status //查看狀態
[centos7]
$>sudo systemctl enable firewalld.service //"開機啟動"啟用
$>sudo systemctl disable firewalld.service //"開機自啟"禁用
$>sudo systemctl start firewalld.service //啟動防火牆
$>sudo systemctl stop firewalld.service //停止防火牆
$>sudo systemctl status firewalld.service //查看防火牆狀態
[開機自啟]
$>sudo chkconfig firewalld on //"開啟自啟"啟用
$>sudo chkconfig firewalld off //"開啟自啟"禁用
kill -9 進程號 殺死進程 9是絕殺的意思
hadoop的端口
50070 //namenode http port
50075 //datanode http port
50090 //2namenode http port
8020 //namenode rpc port rpc用於遠程通信的
50010 //datanode rpc port
hadoop四大模塊
common //公共模塊
hdfs //namenode(主控方) + datanode + secondarynamenode
mapred
yarn //resourcemanager + nodemanager
啟動腳本
1.start-all.sh //啟動所有進程
2.stop-all.sh //停止所有進程
3.start-dfs.sh //啟動存儲進程
NameNode ,DateNode,secondarynamenode
4.start-yarn.sh //啟動計算進行
resourcemanager + nodemanager
[hdfs] start-dfs.sh stop-dfs.sh
NN
DN
2NN
[yarn] start-yarn.sh stop-yarn.sh
RM
NM
修改主機名
1./etc/hostname
s201
2./etc/hosts
127.0.0.1 localhost
192.168.231.201 s201
192.168.231.202 s202
192.168.231.203 s203
192.168.231.204 s204
完全分布式
1.克隆3台client(centos7)
右鍵centos-7-->管理->克隆-> ... -> 完整克隆
2.啟動client
3.啟用客戶機共享文件夾。
4.修改hostname、hosts和靜態ip地址文件
[/etc/hostname]
s202
[/etc/hosts]
192.168.43.202 s202
[/etc/sysconfig/network-scripts/ifcfg-ethxxxx]
...
IPADDR=192.168.43.202
5.重啟網絡服務
$>sudo service network restart
6.修改/etc/resolv.conf文件
nameserver 192.168.231.2
7.重復以上3 ~ 6過程.
准備完全分布式主機的ssh
1.刪除所有主機上的/home/centos/.ssh/*
2.在s201主機上生成密鑰對
$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
3.將s201的公鑰文件id_rsa.pub遠程復制到202 ~ 204主機上。(scp遠程復制)
並放置/home/centos/.ssh/authorized_keys
$>scp id_rsa.pub centos@s201:/home/centos/.ssh/authorized_keys
$>scp id_rsa.pub centos@s202:/home/centos/.ssh/authorized_keys
$>scp id_rsa.pub centos@s203:/home/centos/.ssh/authorized_keys
$>scp id_rsa.pub centos@s204:/home/centos/.ssh/authorized_keys
4.配置完全分布式(${hadoop_home}/etc/hadoop/)
1.[core-site.xml] //決定是namenode(名稱節點)原因所在,所有節點都配置為哪一個節點,則該節點為名稱節點
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://s201/</value>
</property>
</configuration>
2.[hdfs-site.xml] //決定數據備份的個數
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
3.[mapred-site.xml]
不變
4.[yarn-site.xml]
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>s201</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
5.[slaves] //決定數據節點原因所在
s202
s203
s204
6 [hadoop-env.sh]
...
export JAVA_HOME=/soft/jdk
...
5.分發配置
$>cd /soft/hadoop/etc/
$>scp -r full centos@s202:/soft/hadoop/etc/
$>scp -r full centos@s203:/soft/hadoop/etc/
$>scp -r full centos@s204:/soft/hadoop/etc/
6.刪除符號連接
$>cd /soft/hadoop/etc
$>rm hadoop
$>ssh s202 rm /soft/hadoop/etc/hadoop
$>ssh s203 rm /soft/hadoop/etc/hadoop
$>ssh s204 rm /soft/hadoop/etc/hadoop
7.創建符號連接
$>cd /soft/hadoop/etc/
$>ln -s full hadoop
$>ssh s202 ln -s /soft/hadoop/etc/full /soft/hadoop/etc/hadoop
$>ssh s203 ln -s /soft/hadoop/etc/full /soft/hadoop/etc/hadoop
$>ssh s204 ln -s /soft/hadoop/etc/full /soft/hadoop/etc/hadoop
8.刪除臨時目錄文件
$>cd /tmp
$>rm -rf hadoop-centos
$>ssh s202 rm -rf /tmp/hadoop-centos
$>ssh s203 rm -rf /tmp/hadoop-centos
$>ssh s204 rm -rf /tmp/hadoop-centos
9.刪除hadoop日志
$>cd /soft/hadoop/logs
$>rm -rf *
$>ssh s202 rm -rf /soft/hadoop/logs/*
$>ssh s203 rm -rf /soft/hadoop/logs/*
$>ssh s204 rm -rf /soft/hadoop/logs/*
10.格式化文件系統
$>hadoop namenode -format
11.啟動hadoop進程
$>start-all.sh
12、測試成功開啟
② 在namenode下,及s201下jps出現:
NameNode
SecondaryNameNode
ResourceManager
jps
① 在DataNode,s202/s203/s204下jps出現:
DataNode
NodeManager
jps
rsync
四個機器均安裝rsync命令。
遠程同步.
$>sudo yum install rsync
端口查看
netstat -ano | more
錯誤案例
出現錯誤,查看/soft/hadoop/logs日志排查
netstat -naop | grep 50010
進程殺死:kill -9 -4860

把數據節點的目錄干掉,即對/tmp進行清理