搜尋此網誌

2017年1月9日 星期一

查看 elasticsearch 記憶體的設置是否生效

su elasticsearch --shell /bin/bash --command "ulimit -a"

安裝好 elasticsearch 要記得去調整記憶體限制
nano /etc/security/limits.conf

加入以下
# allow user 'elasticsearch' mlockall
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited


2017年1月5日 星期四

MongoDB 3.x 啟用連線認證

先參考
https://scalegrid.io/blog/configuring-mongodb-cr-authentication-as-default-on-mongodb-3-x/

以及這篇 另外 Bugj問題這篇(MongoDB - admin user not authorized)


先新增管理員

切換到admin資料庫
use admin

新增使用者
db.createUser(
   {
     user: "superuser",
     pwd: "xxxxxxxxxx",
     roles: [ { role: "root", db: "admin" } ]
   }
)

新增唯獨權限的使用者 將來管理方便
use admin
db.createUser(
   {
     user: "reader",
     pwd: "reader1234567",
     roles: [ { role: "readAnyDatabase", db: "admin" } ]
   }
)

啟用 MongoDB 的帳密連線
vi /etc/mongod.conf

security:
  authorization: enabled

然後重啟
systemctl restart mongod 


還沒結束!!!
因為Mongodb 啟用連線認證之後,所以備份的資料結構都改變了,
如果另一台MongoDB不調整認證方式,會導致資料恢復失敗,所以:

連線進去
mongo --authenticationDatabase=admin -u superuser -p xxxxxxxxxx 

執行以下指令:
db.adminCommand({authSchemaUpgrade: 1});

確認出現 OK 的提示之後,日後進行 Data Restore 才不會出現以下
the users and roles collections in the dump have an incompatible auth version with target server: cannot restore users of auth version 5 to a server of auth version 3

官方文件參考

- The End -

2016年12月30日 星期五

編譯 WordCount 遭遇到 JAVA 問題時


當 編譯 WordCount 時,一開始我們需要去修改 bashrc 環境
但是 JRE 環境是不能編譯的,會遭遇到 JAVA 錯誤。
由於我是安裝 OPENJDK 而非 ORACLE 的 JDK,
所以環境變數應該寫成這樣子:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64

2016年12月22日 星期四

利用 ssh-add 重新建立 ssh 免密碼登入

安裝 HADOOP 或者 SPARK 時候,都會需要建立 ssh 免密碼登入
但是當有時候改變了 hostname 主機之後,會發現需要重新打 keys
但有時候會發生 打完 keys 了,卻還不能夠成功 ssh 免密碼登入
這時候在 master 上利用以下指令
ssh-add

然後再重新反覆檢查是否能免密碼登入

2016年12月21日 星期三

啟動 Hadoop 之後Nodes of cluster 網頁卻沒有顯示任何 nodes

原因出在於 master 的主機上, /usr/local/hadoop/etc/hadoop/yarn-site.xml 內容
應該要出現以下完整內容才對:
確認好 master 的 yarn-site.xml 都複製到 data1, data2, data3 再重新啟動 YARN 。

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</n$
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8025</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8050</value>
</property>


啟動 Hadoop 之後 Datanode 網頁卻沒有顯示任何 datanode 主機

原因出在於 master 的主機上,/usr/local/hadoop/etc/hadoop/core-site.xml 內容
應該寫 hdfs://master:9000 才對,而不是 hdfs://localhost:9000

<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>

存檔好之後,從 master 主機上以 start-dfs.sh 啟動 HDFS
然後以 netstat -nap | grep 9000 指令檢查,應該出現以下範例:
呈現出其他的 datanode 主機與 master 之間連線狀態
tcp        0      0 192.168.101.220:9000    0.0.0.0:*               LISTEN      9563/java           
tcp        0      0 192.168.101.220:9000    192.168.101.222:58906   ESTABLISHED 9563/java           
tcp        0      0 192.168.101.220:9000    192.168.101.223:44318   ESTABLISHED 9563/java           
tcp        0      0 192.168.101.220:9000    192.168.101.221:38566   ESTABLISHED 9563/java           
tcp        0      0 192.168.101.220:40798   192.168.101.220:9000    TIME_WAIT   -      

回到 http://localhost:50070 網頁上,Datanode Information 會成功列出現有的 Datanode information

Hadoop在主機重開機後,解決 namenode 無法啟動的問題

只要每次重開機後,執行 start-dfs.sh 啟動 Hadoop 服務,以 jps 去檢查時,會看不到Namenode,
這時可能的原因是沒在 core-site.xml 中設定 hadoop.tmp.dir。

解決方法是
先建立 hadoop 帳號下一個臨時資料匣,例如:
/home/hadoop/hadoop_tmp

在 /usr/local/hadoop/etc/hadoop/core-site.xml 中設定 hadoop.tmp.dir 來指定Hadoop的暫存資料夾:
<property>
   <name>hadoop.tmp.dir</name>
   <value>/home/hadoop/hadoop_tmp</value>
</property>

設定完成後,再執行hadoop namenode -format,
下次重新啟動後,再啟動DFS後,Namenode就會正常啟動。

如果要馬上驗證,可以下 start-dfs.sh 之後,以 jps 去檢查。
例如看到:
7734 Jps
6584 SecondaryNameNode
7404 ResourceManager
6237 NameNode

- The End -





搜尋此網誌