jps 是java提供的一個顯示當前所有java進程pid的命令,適合在linux/unix平台上簡單察看當前java進程的一些簡單情況。
Ⅱ 如何在Linux下安裝配置Apache Mahout
Mahout安裝詳細全過程
1、jdk安裝 2
2、SSH無密碼驗證配置 2
3、 Hadoop配置 3
4、Hadop使用 6
5、Maven安裝 7
6、安裝mahout 7
7、hadoop集群來執行聚類演算法 8
8、其他 8
————————————————————
1、jdk安裝
1.1、到官網下載相關的JDK
下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
1.2、打開「終端」
輸入:sh jdk-6u24-linux-i586.bin
1.3、設置JAVA_HOME環境系統變數
輸入:
vi /etc/environment
在文件中添加:
export JAVA_HOME=/root/jdk1.6.0_24
export JRE_Home=/root/jdk1.6.0_24/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
同樣,修改第二個文件。輸入:
vi /etc/profile
在umask 022之前添加以下語句:
export JAVA_HOME=/root/jdk1.6.0_24
export JRE_Home=/root/jdk1.6.0_24/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
1.4、注銷用戶,檢測JDK版本。
輸入:
java -version
2、集群環境介紹
集群包含三個節點:1 個 namenode,2 個 datanode,節點之間區域網連接,可以相互 ping 通。節點 IP 地址分布如下:
Namenode: [email protected]
Datanode1: slave1 @192.168.1.20
Datanode2: [email protected]
三台節點上均是CentOS系統,Hadoop在/root/hadoop/目錄下。
在/etc/hosts上添加主機名和相應的IP地址:
192.168.1.10 master
192.168.1.20 slave1
192.168.1.21 slave2
3、SSH無密碼驗證配置
2.1 Hadoop 需要使用SSH 協議,namenode 將使用SSH 協議啟動 namenode和datanode 進程,偽分布式模式數據節點和名稱節點均是本身,必須配置 SSH localhost無密碼驗證。
用root用戶登錄,在家目錄下執行如下命令:ssh-keygen -t rsa
[root@master ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): & 按回車默認路徑 &
Created directory '/root/.ssh'. &創建/root/.ssh目錄&
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
c6:7e:57:59:0a:2d:85:49:23:cc:c4:58:ff:db:5b:38 root@master
通過以上命令將在/root/.ssh/ 目錄下生成id_rsa私鑰和id_rsa.pub公鑰。進入/root/.ssh目錄在namenode節點下做如下配置:
[root@master .ssh]# cat id_rsa.pub > authorized_keys
[root@master .ssh]# scp authorized_keys 192.168.1.20:/root/.ssh/
[root@master .ssh]# scp authorized_keys 192.168.1.21:/root/.ssh/
配置完畢,可通過ssh 本機IP 測試是否需要密碼登錄。
2.2 和namenode無密碼登錄所有Datanode原理一樣,把Datanode的公鑰復制到
Namenode的.ssh目錄下。
[root@slave1 .ssh]# scp authorized_keys1 192.168.1.10:/root /.ssh
[root@ slave2.ssh]# scp authorized_keys2 192.168.1.10:/root /.ssh
將剛傳過來的authorized_keys1、2加入到authorized_keys
[root@ master.ssh]# cat authorized_keys1 > authorized_keys
[root@ master.ssh]# cat authorized_keys2 > authorized_keys
這樣也能在Datanode上關閉和啟動Hadoop服務。
4、 Hadoop配置
下載 hadoop-0.20.2.tar.gz, 進行解壓。
tar zxvf hadoop-0.20.2.tar.gz
修改/etc/profile,加入如下:
# set hadoop path
export HADOOP_HOME=/root/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
4.1、進入hadoop/conf, 配置Hadoop配置文件
4.1.1 配置hadoop-env.sh文件
添加 # set java environment
export JAVA_HOME=/root/jdk1.6.0_24
編輯後保存退出。
4.1.2 配置core-site.xml
# vi core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.1.10:9000/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/hadooptmp</value>
</property>
</configuration>
4.1.3 配置hdfs-site.xml
# vi hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/root/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/root/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
4.1.4 配置mapred-site.xml
# vi mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.1.10:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/root/hadoop/mapred/local</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/tmp/hadoop/mapred/system</value>
</property>
</configuration>
4.1.5 配置masters
# vi masters
192.168.1.10
4.1.6 配置slaves
# vi slaves
192.168.1.20
192.168.1.21
4.2、 Hadoop啟動
4.2.1 進入 /root/hadoop/bin目錄下,格式化namenode
# ./hadoop namenode –format
4.2.2 啟動hadoop所有進程
在/root/hadoop/bin 目錄下,執行start-all.sh命令
啟動完成後,可用jps命令查看hadoop進程是否啟動完全。正常情況下應該有如下進程:
10910 NameNode
11431 Jps
11176 SecondaryNameNode
11053 DataNode
11254 JobTracker
11378 TaskTracker
我在搭建過程中,在此環節出現的問題最多,經常出現啟動進程不完整的情況,要不是datanode無法正常啟動,就是namenode或是TaskTracker啟動異常。解決的方式如下:
1)在Linux下關閉防火牆:使用service iptables stop命令;
2)再次對namenode進行格式化:在/root/hadoop/bin 目錄下執行hadoop namenode -format命令
3)對伺服器進行重啟
4)查看datanode或是namenode對應的日誌文件,日誌文件保存在/root/hadoop/logs目錄下。
5)再次在/bin目錄下用start-all.sh命令啟動所有進程,通過以上的幾個方法應該能解決進程啟動不完全的問題了。
4.2.3 查看集群狀態
在 bin目錄下執行:hadoop dfsadmin -report
# hadoop dfsadmin –report
4.3 在WEB頁面下查看Hadoop工作情況
打開IE瀏覽器輸入部署Hadoop伺服器的IP:
http://localhost:50070
http://localhost:50030。
5、Hadop使用
一個測試例子wordcount:
計算輸入文本中詞語數量的程序。WordCount在Hadoop主目錄下的java程序包hadoop-0.20.2-examples.jar 中,執行步驟如下:
在/root/hadoop/bin/目錄下進行如下操作:
./hadoop fs -mkdir input(新建目錄名稱,可任意命名)
mkdir /root/a/
vi /root/a/a.txt
寫入hello world hello
# hadoop fs -FromLocal /root/a/ input
在/root/hadoop/bin下執行:
# ./hadoop jar hadoop-0.20.2-examples.jar wordcount input output (提交作業,此處需注意input與output是一組任務,下次再執行wordcount程序,還要新建目錄intput1與output1不能跟input與output重名)
6、Maven安裝
6.1下載Maven
解壓tar vxzf apache-maven-3.0.2-bin.tar.gz
mv apache-maven-3.0.2 /root/maven
6.2 vi ~/.bashrc
添加如下兩行
export M3_HOME=/root/maven
export PATH=${M3_HOME}/bin:${PATH}
6.3 先logout,之後再login
查看maven版本,看是否安裝成功
mvn -version
7、安裝mahout
安裝方法見:
https://cwiki.apache.org/confluence/display/MAHOUT/BuildingMahout
8、hadoop集群來執行聚類演算法
8.1數據准備
cd /root/hadoop
wget http://archive.ics.uci.e/ml/databases/synthetic_control/synthetic_control.data
8.2 ./hadoop fs -mkdir testdata
./hadoop fs -put synthetic_control.data testdata
./hadoop fs -lsr testdata
bin/hadoop jar /root/mahout/mahout-examples-0.4-job.jar org.apache.mahout.clustering.syntheticcontrol.kmeans.Job
8.3查看一下結果吧
bin/mahout vectormp --seqFile /user/root/output/data/part-r-00000
這個直接把結果顯示在控制台上。
9、hadoop集群來執行推薦演算法
分布式
bin/hadoop jar /root/trunk/mahout-distribution-0.4/mahout-core-0.4-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -Dmapred.map.tasks=3 -Dmapred.rece.tasks=3 -Dmapred.input.dir=testdata/100wan.txt -Dmapred.output.dir=output2
偽分布式
bin/hadoop jar /root/trunk/mahout-distribution-0.4/mahout-core-0.4-job.jar org.apache.mahout.cf.taste.hadoop.pseudo.RecommenderJob --recommenderClassName org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender -Dmapred.input.dir=testdata/10wan.dat -Dmapred.output.dir=output_w10wan
10、其他
離開安全模式:hadoop dfsadmin -safemode leave
Ⅲ linux系統下用jps命令查看java進程,提示process information unavailable是為什麼
一般kill進程是這樣的:
比如你要殺掉top進程,
ps-ef|greptop查看top進程因為顯示出進程數太多使用grep過濾,
kill-9殺掉top進程,
ps-ef|greptop查看top進程有沒殺掉,如圖已殺掉
Ⅳ linux怎麼查看jvm正在使用的哪個垃圾回收器
搜一下jps和jmap命令,是JDK提供的,jps能顯示出jvm的進程號,然後用jmap顯示jvm的配置和信息
Ⅳ Linux下查看一個進程佔用了哪個埠的方法
時候需要在Linux下查看一個進程佔用了那個埠,但是只知道進程大致的名稱,比如要查看hadoop的namenode在哪個埠上運行,以便在eclipse中連接。
首先用ps命令查看進程的id:
復制代碼代碼如下:
$ ps -ef | grep Name
其中每一行(很長的時候會佔用若干行)的第二個欄位就是進程的id。
當然,對於在java虛擬機中運行的進程,比如hadoop的守護進程,可以直接用jsp命令查看:
$ jps | grep Name
或者已經知道進程的確切名稱,可以用pidof查看:
$ pidof Name
查看到進程id之後,使用netstat命令查看其佔用的埠:
$ netstat -nap | grep pid
Ⅵ 3台linux-centos機器的無秘鑰ssh配置都完成了,都安裝了jdk,但是ssh xxx jps無效!
通過SSH直接執行遠程命令和腳本
這種方式會使用Bash的non-interactive + non-login shell模式,它會創建一個shell,執行完腳本之後便退出,不再需要與用戶交互。
no-login shell,顧名思義就是不是在登錄Linux系統時啟動的(比如你在命令行提示符上輸入bash啟動)。它不會去執行/etc/profile文件,而會去用戶的HOME目錄檢查.bashrc並載入。
系統執行Shell腳本的時候,就是屬於這種non-interactive shell。Bash通過BASH_ENV環境變數來記錄要載入的文件,默認情況下這個環境變數並沒有設置。如果有指定文件,那麼Shell會先去載入這個文件裡面的內容,然後再開始執行Shell腳本。
解決方案:
在將要登陸的主機的用戶目錄下修改.bashrc文件,新增
export JAVA_HOME=/soft/ln/jdk
export PATH=$PATH:$JAVA_HOME/bin
保存退出後
source .bashrc
然後在重新使用ssh命令登陸
Ⅶ 用Linux命令怎麼刪除已經裝好的Hadoop配置
namenode就是master。
必須要有一台啟動namenode服務。
=============
如果只需要 datanode,那麼jps 命令後,查看到線程ID
然後kill 掉就好了。
注意 kill掉 namenode後,整個hadoop集群就宕掉了。
Ⅷ Linux系統監控要用到哪些命令
記錄一下自己常用的linux系統命令,方便以後查閱,發覺記憶越來越不行了
找到最耗CPU的java線程ps命令
命令:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid
結果展示:
這個命令的作用,主要是可以獲取到對應一個進程下的線程的一些信息。 比如你想分析一下一個java進程的一些運行瓶頸點,可以通過該命令找到所有當前Thread的佔用CPU的時間,也就是這里的最後一列。
比如這里找到了一個TID : 30834 ,所佔用的TIME時間最高。
通過 printf "%x\n" 30834 首先轉化成16進制, 繼續通過jstack命令mp出當前的jvm進程的堆棧信息。 通過Grep命令即可以查到對應16進制的線程id信息,很快就可以找到對應最耗CPU的代碼快在哪。
簡單的解釋下,jstack下這一串線程信息內容:
"DboServiceProcessor-4-thread-295" daemon prio=10 tid=0x00002aab047a9800 nid=0x7d9b waiting on condition [0x0000000046f66000]
nid : 對應的linux操作系統下的tid,就是前面轉化的16進制數字
tid: 這個應該是jvm的jmm內存規范中的唯一地址定位,如果你詳細分析jvm的一些內存數據時用得上,我自己還沒到那種程度,所以先放下
top命令
命令:top -Hp pid
結果顯示:
和前面的效果一下,你可以實時的跟蹤並獲取指定進程中最耗cpu的線程。 再用前面的方法提取到對應的線程堆棧信息。
判斷I/O瓶頸
mpstat命令
命令:mpstat -P ALL 1 1000
結果顯示:
注意一下這裡面的%iowait列,CPU等待I/O操作所花費的時間。這個值持續很高通常可能是I/O瓶頸所導致的。
通過這個參數可以比較直觀的看出當前的I/O操作是否存在瓶頸
iostat命令
命令: iostat -m -x 1 1000
同樣你可以觀察對應的CPU中的%iowait數據,除此之外iostat還提供了一些更詳細的I/O狀態數據,比如比較重要的有:
avgqu-sz : The average queue length of the requests that were issued to the device. (磁碟隊列的請求長度,正常的話2,3比較好。可以和cpu的load一樣的理解)
await : The average time (in milliseconds) for I/O requests issued to the device to be served. (代表一個I/O操作從wait到完成的總時間)
svctm和%util都是代表處理該I/O請求花費的時間和CPU的時間比例。 判斷是否瓶頸時,這兩個參數不是主要的
r/s w/s 和 rMB/s wMB/s 都是代表當前系統處理的I/O的一些狀態,前者是我們常說的tps,後者就是吞吐量。這也是評價一個系統的性能指標
pid命令
命令: pidstat -p pid -u -d -t -w -h 1 1000
結果顯示:
相當實用的一個命令,可以基於當個進程分析對應的性能數據,包括CPU,I/O,IR , CS等,可以方便開發者更加精細化的觀察系統的運行狀態。不過pidstat貌似是在2.6內核的一些較新的版本才有,需要安裝sysstat包。
ubuntu下,可以通過sudo apt-get install sysstat進行安裝。
sar命令
命令:sar -x pid 1 1000
sar也可以指定對應的pid,關注固定的幾個參數,沒有pidstat那麼強大。 看不到對應的I/O, IR等信息。
sar的功能可以覆蓋mpstat , iostat的相關功能。
dstat命令
命令:dstat -y --tcp 1 1000
通過dstat --tcp可以比較方便的看到當前的tcp的各種狀態,不需要每次netstat -nat去看
其他命令
netstat -natp : 查看對應的網路鏈接,關注下Recv-Q , Send-Q , State。
lsof -p pid : 查找對應pid的文件句柄
lsof -i : 80 : 查找對應埠被哪個進程佔用
lsof /tmp/1.txt :查找對應文件被哪個進程佔用
tcpmp / wireshark :抓包分析工具
jstat / jmap / jstack / jps 等一系列的java監控命令
最後
如果你想做一些性能調優的工作,一定要善於利用一些工具進行關注相應的狀態。通過linux命令你可以比較方便的觀測到CPU , I/O , network等一些比較外圍的狀態, 很多時候就已經可以解決大部分的問題。jvm內部的一些運行狀態監控,得需要藉助一些特有的工具進行細粒度的觀測。
Ⅸ linux怎麼查看tomcat是否啟動
#jps 命令查看本機運行的java進程,看看有沒有tomcat
ps命令 #ps aux | grep tomcat 查看系統中的運行進程里有沒有tomcat進程
埠查看,如果你的tomcat沒有修改默認的埠(8080)可以使用埠檢查命令
#netstat -anop | grep 8080