大数据运维方向面试题
一、基礎(chǔ)題
1.請(qǐng)寫出http和https請(qǐng)求的區(qū)別,并寫出遇到過的響應(yīng)狀態(tài)碼.
一、https協(xié)議需要到ca申請(qǐng)證書,一般免費(fèi)證書很少,需要交費(fèi)。
二、http是超文本傳輸協(xié)議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協(xié)議。 三、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
四、http的連接很簡單,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。
狀態(tài)碼常用:
301 永久重定向
403 服務(wù)器已經(jīng)理解請(qǐng)求,但是拒絕執(zhí)行
404 頁面丟失
500 服務(wù)器錯(cuò)誤
2.請(qǐng)寫出在linux系統(tǒng)上面搭建系統(tǒng)或者產(chǎn)品等大數(shù)據(jù)平臺(tái)需要對(duì)系統(tǒng)進(jìn)行哪些檢查。
?從穩(wěn)定性說:需要檢查集群中的每一臺(tái)服務(wù)器的命令安裝是否完善,環(huán)境變量是否配置完畢,每一臺(tái)服務(wù)器的軟件配置是否有問題。
?擴(kuò)展性: 能夠快速擴(kuò)展機(jī)器,橫向擴(kuò)展條件是否具備
3.請(qǐng)寫出使用過的linux系統(tǒng)有哪些版本,如何查看系統(tǒng)信息?(發(fā)行版本,內(nèi)核版本等信息)。
Centos 6.5 6.6 x64 1.查看發(fā)行版本命令:cat /etc/issue
2.查看內(nèi)核版本: cat /proc/version
4.請(qǐng)使用命令在linux系統(tǒng)中創(chuàng)建用戶test,用戶組為test1,用戶目錄 /test , 并賦予sudo權(quán)限。
useradd -d /test -m test -g test1 -G root
useradd 選項(xiàng) 用戶名 其中各選項(xiàng)含義如下:
-c comment 指定一段注釋性描述。
-d 目錄 指定用戶主目錄,如果此目錄不存在,則同時(shí)使用-m選項(xiàng),可以創(chuàng)建主目錄。
-g 用戶組 指定用戶所屬的用戶組。
-G 用戶組,用戶組 指定用戶所屬的附加組。
-s Shell文件 指定用戶的登錄Shell。
-u 用戶號(hào) 指定用戶的用戶號(hào),如果同時(shí)有-o選項(xiàng),則可以重復(fù)使用其他用戶的標(biāo)識(shí)號(hào)。
Sudo可以修改文件需要root用戶
sudo的工作過程如下:
1,當(dāng)用戶執(zhí)行sudo時(shí),系統(tǒng)會(huì)主動(dòng)尋找/etc/sudoers文件,判斷該用戶是否有執(zhí)行sudo的權(quán)限
2,確認(rèn)用戶具有可執(zhí)行sudo的權(quán)限后,讓用戶輸入用戶自己的密碼確認(rèn)
3,若密碼輸入成功,則開始執(zhí)行sudo后續(xù)的命令
4,root執(zhí)行sudo時(shí)不需要輸入密碼(eudoers文件中有配置root ALL=(ALL) ALL這樣一條規(guī)則)
5,若欲切換的身份與執(zhí)行者的身份相同,也不需要輸入密碼
5.寫出最少3個(gè)監(jiān)控系統(tǒng)指標(biāo)的命令(如內(nèi)存,CPU ,IO,磁盤等)。
看內(nèi)存 :free
看cpu:more /proc/cpuinfo
看IO:iostat -x 10
看磁盤:fdisk -l
6.請(qǐng)用多種方式在linux系統(tǒng)中設(shè)置環(huán)境變量,并指出各種方式的區(qū)別。
1、控制臺(tái)中設(shè)置,不贊成這種方式,因?yàn)樗粚?duì)當(dāng)前的shell 起作用,換一個(gè)shell設(shè)置就無效了: $PATH="$PATH":/NEW_PATH (關(guān)閉shell Path會(huì)還原為原來的path)
2、修改 /etc/profile 文件,如果你的計(jì)算機(jī)僅僅作為開發(fā)使用時(shí)推存使用這種方法,因?yàn)樗杏脩舻膕hell都有權(quán)使用這個(gè)環(huán)境變量,可能會(huì)給系統(tǒng)帶來安全性問題。這里是針對(duì)所有的用戶的,所有的shell 在/etc/profile的最下面添加: export PATH="$PATH:/NEW_PATH"
3、修改bashrc文件,這種方法更為安全,它可以把使用這些環(huán)境變量的權(quán)限控制到用戶級(jí)別,這里是針對(duì)某一特定的用戶,如果你需要給某個(gè)用戶權(quán)限使用這些環(huán)境變量,你只需要修改其個(gè)人用戶主目錄下的 .bashrc文件就可以了。 在下面添加: Export PATH="$PATH:/NEW_PATH"
7.請(qǐng)?jiān)趌inux系統(tǒng)中添加指定的定時(shí)任務(wù)。(每月1,15日,1,10點(diǎn)運(yùn)行 /run.sh).
* 1 ,10 1,15 * * sh /run.sh
8.編寫個(gè)shell腳本將/data目錄下大于100k的文件轉(zhuǎn)移到 /tmp 目錄下。
#! /bin/sh
directory=/data/*
filesize=0
for file in $directory
do
filesize=$(wc -c < $(basename $file))
if [ $filesize -gt 100*1024 ]
then
mv $(basename $file) /tmp
fi
done
9.請(qǐng)使用命令寫出在linux系統(tǒng)中對(duì)于文件01.txt ,查找行內(nèi)容包含“java”關(guān)鍵字,但不包含“bug”關(guān)鍵字的內(nèi)容,不區(qū)分大小寫。
:set ignorecase 忽略大小寫 然后執(zhí)行命令 /java[^bug]
10.請(qǐng)幫我查詢出8443端口正在被哪個(gè)進(jìn)程使用?
netstat -tunlp|grep 8443
11.請(qǐng)?jiān)趌inxu系統(tǒng)中使用命令快速找出mysql文件的位置。
rpm -qal |grep mysql
12.搭建NFS文件共享服務(wù),如共享目錄為 /nfs , 如何配置NFS服務(wù),客戶端怎么掛載共享目錄。
1. yum install nfs-utils rpcbind 安裝NFS服務(wù)端
2. vi /etc/sysconfig/nfs 搜索和設(shè)置如下所示的端口配置:
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
3.關(guān)閉防火墻
4.vi /etc/selinux/config 將上述文件中的 SELINUX=enforcing 替換為 SELINUX=permissive 保存上述文件之后,運(yùn)行以下命令: setenforce 0
5、創(chuàng)建共享目錄 mkdir /home/nfs-share
6、vi /etc/exports 在上述文件的末尾新增一行,如下所示:
/data/nfs_share 192.168.4.212(rw,sync,no_root_squash)
/data/nfs_share *(ro) 這一行表示只有192.168.4.212客戶端能夠以讀寫權(quán)限掛載共享目錄,其他客戶端只能以只讀權(quán)限掛載。
7.啟動(dòng)chkconfig nfs on
chkconfig rpcbind on
service nfs start
service rpcbind start
8. yum install -y nfs-utils
9.手動(dòng)掛載NFS共享目錄
Step-1:確定掛載點(diǎn),運(yùn)行以下命令: showmount -e 192.168.4.211
-e選項(xiàng)顯示NFS服務(wù)端的導(dǎo)出列表。
Step-2:創(chuàng)建掛載目錄,運(yùn)行以下命令: mkdir -p /root/remote_dir 其中,/root/remote_dir為共享目錄的掛載點(diǎn)目錄。
Step-3:掛載共享目錄,運(yùn)行以下命令: mount -t nfs 192.168.4.211:/data/nfs_share /root/remote_dir 其中,-t選項(xiàng)用于指定文件系統(tǒng)的類型為nfs。
Step-4:共享目錄使用結(jié)束之后,卸載共享目錄,運(yùn)行以下命令: umount /root/remote_dir
13.解釋以下vi命令的意思,根據(jù)意思寫出vi命令。
1) :s/p1/p2/g 將所有的p1替換成p2
2) 顯示行號(hào) :set nu
3) p 粘貼 對(duì)應(yīng) nyy復(fù)制使用
4) 刪除光標(biāo)下6行 6dd
5) 將光標(biāo)移動(dòng)到最后一行行首 G
6) /apple 查找apple字符串
14.是否搭建過大數(shù)據(jù)組件相關(guān)的集群,如果集群之間無法通信了,怎么排查?
搭建過,應(yīng)該檢查 1. jps查看進(jìn)程是否停止
2. 檢查ip是否ping通
15.是否安裝過mysql源碼版本,寫出安裝流程。
Mysql5.6安裝
一 編譯環(huán)境安裝
1、安裝make編譯器
2、安裝 bison
3、安裝gcc-c ++
4、安裝cmake
5、安裝ncurses
6、 yum install gcc gcc-c++
yum install -y ncurses-devel
yum install -y cmake
yum install -y libaio
yum install -y bison
二 mysql安裝
1、解壓mysql源碼壓縮文件
2、編譯完成配置mysql服務(wù)
3、啟動(dòng)mysql
4、修改root密碼(默認(rèn)為空)
16.有下列兩表:
TAB1
C1 C2
------ - -----
A 11
B 12
C 13
TAB2
CX CY
------ ------
A 21
C 22
D 23
要得到一下結(jié)果:
C1 C2 CX CY
----- ----- ------ ------
A 11 A 21
C 13 C 22
----- ------ D 23
請(qǐng)寫出具體的sql語句
SELECT * from tab1 RIGHT JOIN tab2 on tab1.C1 =tab2.CX
Union是連接兩個(gè)查詢語句 (select * from tab1 union all select * from tab2)
Union ALL 連接所有值包括重復(fù) Union不包括重復(fù)值
二、基礎(chǔ)題
1、請(qǐng)寫出mysql數(shù)據(jù)庫的幾種備份/恢復(fù)方法。并指出其優(yōu)缺點(diǎn)
備份
1、linux命令 mysqldump 直接生成.sql文件備份
mysqldump -u username -p dbname table1 > /home/BackupName.sql 輸出mysql密碼后備份
2.利用工具備份(Navicat)
3.復(fù)制整個(gè)數(shù)據(jù)庫目錄備份 (xcopy 命令)
4.使用mysqlhotcopy工具快速備份(熱備份)
原理:先將需要備份的數(shù)據(jù)庫加上一個(gè)讀鎖,然后用FLUSH TABLES將內(nèi)存中的數(shù)據(jù)寫回到硬盤上的數(shù)據(jù)庫,最后,把需要備份的數(shù)據(jù)庫文件復(fù)制到目標(biāo)目錄。
恢復(fù):
mysql -u root -p dbname < C:ackup.sql
優(yōu)缺點(diǎn):
1.Mysqldump:利用linux或者shell進(jìn)行備份比較靈活,運(yùn)行較慢
2.利用工具:不好控制,不能自定義
3.復(fù)制整個(gè)data目錄 :這種方法不適用于InnoDB存儲(chǔ)引擎的表,而對(duì)于MyISAM存儲(chǔ)引擎的表很方便。同時(shí),還原時(shí)MySQL的版本最好相同。
4.mysqlhotcopy:mysqlhotcopy支持不停止MySQL服務(wù)器備份。而且,mysqlhotcopy的備份方式比mysqldump快。mysqlhotcopy是一個(gè)perl腳本,主要在Linux系統(tǒng)下使用。其使用LOCK TABLES、FLUSH TABLES和cp來進(jìn)行快速備份。需要安裝Perl和DBI支持。
2、請(qǐng)解釋max_allowed_packet 的用途
指代mysql服務(wù)器端和客戶端在一次傳送數(shù)據(jù)包的過程當(dāng)中數(shù)據(jù)包的大小這個(gè)是定義mysql服務(wù)器端和客戶端在一次傳送數(shù)據(jù)包的過程當(dāng)中數(shù)據(jù)包的大小定義過大,比如max_allowed_packet=8092,有可能服務(wù)器端太忙,來不及接收,或者網(wǎng)絡(luò)太差,會(huì)容易造成丟包定義過小,會(huì)因?yàn)榭蛻舳丝赡軣o法快速接收服務(wù)器端發(fā)過來的包,一般推薦是4096
3、寫出調(diào)優(yōu)過的mysql配置參數(shù)(連接數(shù)/接收的數(shù)據(jù)包大小)
MySQL配置文件my.cnf
global max_connections 設(shè)置連接數(shù)
max_allowed_packet 客戶端與服務(wù)端之間一次傳輸數(shù)據(jù)包大小
。。。。
4、查看linux系統(tǒng)中啟動(dòng)了多少java進(jìn)程,并獲取其中某個(gè)java進(jìn)程的內(nèi)存使用情況。
Jps 查看進(jìn)程pid
jmap -heap pid
5、指出Nginx支持哪幾種負(fù)載均衡模式,并指出各模式的應(yīng)用場景。
1.roundrobin 輪詢方式,依次將請(qǐng)求分配到各個(gè)后臺(tái)服務(wù)器中,默認(rèn)的負(fù)載均衡方式。 適用于后臺(tái)機(jī)器性能一致的情況。 掛掉的機(jī)器可以自動(dòng)從服務(wù)列表中剔除。
2.weight 根據(jù)權(quán)重來分發(fā)請(qǐng)求到不同的機(jī)器中,適用于后臺(tái)機(jī)器性能不一樣的情況。
3.ip_hash 根據(jù)請(qǐng)求者ip的hash值將請(qǐng)求發(fā)送到后臺(tái)服務(wù)器中,可以保證來自同一ip的請(qǐng)求被打到固定的機(jī)器上,可以解決session問題。
4.url_hash 根據(jù)請(qǐng)求的url的hash值將請(qǐng)求分到不同的機(jī)器中,當(dāng)后臺(tái)服務(wù)器為緩存的時(shí)候效率高。
5.fair 根據(jù)后臺(tái)響應(yīng)時(shí)間來分發(fā)請(qǐng)求,響應(yīng)時(shí)間短的分發(fā)的請(qǐng)求多。
三、專項(xiàng)題
1.寫出hadoop集群常用進(jìn)程以及進(jìn)程含義
1、Namenode
它是Hadoop 中的主服務(wù)器,管理文件系統(tǒng)名稱空間和對(duì)集群中存儲(chǔ)的文件的訪問。
2、Datanode
它負(fù)責(zé)管理連接到節(jié)點(diǎn)的存儲(chǔ)(一個(gè)集群中可以有多個(gè)節(jié)點(diǎn))。每個(gè)存儲(chǔ)數(shù)據(jù)的節(jié)點(diǎn)運(yùn)行一個(gè) datanode 守護(hù)進(jìn)程。
3、secondaryNameNode
它不是 namenode 的冗余守護(hù)進(jìn)程,而是提供周期檢查點(diǎn)和清理任務(wù)。 出于對(duì)可擴(kuò)展性和容錯(cuò)性等考慮,我們一般將SecondaryNameNode運(yùn)行在一臺(tái)非NameNode的機(jī)器上。
4、ResourceManager
負(fù)責(zé)調(diào)度 DataNode上的工作。每個(gè) DataNode有一個(gè)NodeManager,它們執(zhí)行實(shí)際工作。
5、NodeManager
負(fù)責(zé)執(zhí)行ResourceManager分發(fā)的任務(wù)
HA 模式忽略
2.Hadoop安裝部署需要修改的配置文件,以及常用端口,舉例說明
hadoop-env.sh hadoop jdk配置
core-site.xml hadoop核心文件-配置hadoop的命名服務(wù)和tmp目錄和zookeeper集群
hdfs-site.xml 配置通信端口 http端口等。
mapred-site.xml 配置mapreduce的資源調(diào)度框架 yarn
yarn-site.xml yarn相關(guān)配置
Slaves 文件 指定hadoop集群的子節(jié)點(diǎn)位置
端口:
50070 namenode的web訪問端口
9000 RPC通信端口
2181 zookeeper端口
...
3.使用過的hadoop shell 命令
Hadoop fs -ls /
Hadoop fs -mkdir /test
Hadoop fs -cat /
.......
總結(jié)
以上是生活随笔為你收集整理的大数据运维方向面试题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nodejs TCP服务器和客户端通信的
- 下一篇: 腾讯应用宝正式开启 比赛进行到第手游渠道