SAM的程式筆記

http://samchu.logdown.com/posts/250103-spark-teaching-1-hadoop26-installation

Spark teaching (1) -Hadoop2.6 installation
這次練習用Hadoop2.6來安裝
安裝後看起來也可以正常跑在x64上,因為沒有出現錯誤提示
OS:CentOS 7
JDK:8u25
Hadoop:2.6


OS環境設定
#檢視Selinux狀態
sestatus
#關閉Selinux神奇的一句解決
sed -i 's/enforcing/disabled/g' /etc/selinux/config /etc/selinux/config
#重開機
reboot


#ps.通常是這麼關Selinux的
vi /etc/sysconfig/selinux
#把SELINUX=enforcing 改成 SELINUX=disabled
關掉防火牆
CentOS7
# Check the Status of Firewalld


systemctl status firewalld
# Stop Firewalld


systemctl stop firewalld
# Disable Firewalld


systemctl disable firewalld


vi /etc/selinux/config
# change


SELINUX=disabled


reboot
為了之後的HBase
vi /etc/security/limits.conf
#檔尾增加以下兩句
hadoop - nofile 32768
hadoop soft/hard nproc 32000


vi /etc/pam.d/login
#檔尾增加這句
session required pam_limits.so
修改SSH認證
vi /etc/ssh/sshd_config
#把以下兩個註解拿掉
RSAAuthentication yes
PubkeyAuthentication yes
配置Host
vi /etc/hosts
#老師說要從檔頭增加,但是我之前試是沒差
192.168.200.131 hadoop1


#另一種方法,要是覺得從檔尾增加沒差的話可以用cat >> EOF比較快
cat >> /etc/hosts << EOF
192.168.200.131 hadoop1
EOF
增加用戶組
#增加組 -g 是指定組的編號,避免在一些文件系統有問題ex:nfs
groupadd -g 1000 hadoop
useradd -u 2000 -g hadoop hadoop
passwd hadoop
#建立應用程式資料夾
mkdir -p /app/hadoop
軟體安裝
安裝Java
手動配置jdk


#安裝必要工具
yum -y install wget openssh-clients


#下載JDK8u25
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u25-b17/jdk-8u25-linux-x64.tar.gz"


#手動配置方法
mkdir /usr/java


tar -zxvf jdk-8u25-linux-x64.tar.gz -C /usr/java
使用rpm安裝jdk


#或是用rpm安裝
rpm -ivh jdk-8u25-linux-x64.rpm
#檢視安裝目錄
whereis java
安裝scala
cd /app
wget http://downloads.typesafe.com/scala/2.11.4/scala-2.11.4.tgz
tar zxf scala-2.11.4.tgz
rm -f scala-2.11.4.tgz
mv scala-2.11.4 scala2114
chown -R root:root scala2114/
安裝hadoop
cd /app/hadoop
wget http://apache.stu.edu.tw/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
tar zxf hadoop-2.6.0.tar.gz
rm -f hadoop-2.6.0.tar.gz
mv hadoop-2.6.0 hadoop260
hadoop環境文件
DataNode名稱
cd hadoop260/etc/hadoop/
#使用EOF直接覆蓋
cat > slaves << EOF
hadoop1
EOF
HDFS的訪問接口
cat > core-site.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
   <property>
      <name>fs.defaultFS</name>
      <value>hdfs://hadoop1:8000</value>
   </property>
</configuration>
EOF
HDFS的文件保存目錄
cat > hdfs-site.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
   <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:///app/hadoop/hadoop260/mydata/name</value>
   </property>
   <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:///app/hadoop/hadoop260/mydata/data</value>
   </property>
   <property>
      <name>dfs.replication</name>
      <value>1</value>
   </property>
</configuration>
EOF
設置mapreduce框架採用yarn
cat > mapred-site.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>
EOF
端口的配置
老師只有說這是一些端口的配置
(因為有一些環境變數所以要用vi)


vi yarn-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>hadoop1</value>
   </property>
   <property>
      <name>yarn.resourcemanager.address</name>
      <value>${yarn.resourcemanager.hostname}:8032</value>
   </property>
   <property>
      <name>yarn.resourcemanager.scheduler.address</name>
      <value>${yarn.resourcemanager.hostname}:8030</value>
   </property>
   <property>
      <name>yarn.resourcemanager.webapp.address</name>
      <value>${yarn.resourcemanager.hostname}:8088</value>
   </property>
   <property>
      <name>yarn.resourcemanager.webapp.https.address</name>
      <value>${yarn.resourcemanager.hostname}:8090</value>
   </property>
   <property>
      <name>yarn.resourcemanager.resource-tracker.address</name>
      <value>${yarn.resourcemanager.hostname}:8031</value>
   </property>
   <property>
      <name>yarn.resourcemanager.admin.address</name>
      <value>${yarn.resourcemanager.hostname}:8033</value>
   </property>
   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
   </property>
</configuration>
編輯Hadoop的運行環境
vi hadoop-env.sh
#主要是修改export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/java/jdk1.8.0_25
變更擁有者
chown -R hadoop:hadoop /app/hadoop/
OS環境變數配置
vi /etc/profile


export JAVA_HOME=/usr/java/jdk1.8.0_25
export JRE_HOME=/usr/java/jdk1.8.0_25/jre
export SCALA_HOME=/app/scala2114
export HADOOP_COMMON_HOME=/app/hadoop/hadoop260
export HADOOP_CONF_DIR=/app/hadoop/hadoop260/etc/hadoop
export YARN_CONF_DIR=/app/hadoop/hadoop260/etc/hadoop
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:${SCALA_HOME}/bin:${HADOOP_COMMON_HOME}/bin:${HADOOP_COMMON_HOME}/sbin:$PATH
更新環境變數
source /etc/profile
#測試java
java -version
#測試scala
scala -version
#關機
shutdown -h now
這樣就完成一台樣版機也是偽分散式安裝的基礎安裝


SSH無密碼登入
su - hadoop
#生成公鑰
ssh-keygen -t rsa


#檢視公鑰是否生成,應該要有這兩個檔id_rsa、id_rsa.pub
cd ~/.ssh
ll


#把公鑰提交給對方好進行無密碼登入(如果是叢集則把hadoop1換成其他主機繼續進行)
ssh hadoop1 cat /home/hadoop/.ssh/id_rsa.pub >> authorized_keys


#在目錄下會加authorized_keys資料夾,但是要變更權限600只有擁有者有讀跟寫的權限
chmod 600 authorized_keys


#在叢集的話利用scp將做好的authorized_keys直接複製到其他主機
scp authorized_keys hadoop@hadoop2:/home/hadoop/.ssh/
#還有這檔案就可以不用再做無密碼登入
scp known_hosts hadoop@hadoop2:/home/hadoop/.ssh/


#測試無密碼登入
ssh hadoop1 date
以hadoop用戶執行初始化
cd /app/hadoop/hadoop260
#格式化
bin/hdfs namenode -format


#看到成功訊息後檢視可以看到name資料夾已被建立
ll mydata


#啟動HDFS
sbin/start-dfs.sh
#老師建議HDFS跟YARN分開啟動,若是HDFS內有大量資料會啟動安全檢查(耗時),等安全檢查完成後再啟動YARN比較安全


#測試
bin/hdfs dfs -ls /


bin/hdfs dfs -mkdir -p /dataguru/test


bin/hdfs dfs -put LICENSE.txt /dataguru/test/
啟動Yarn
sbin/start-yarn.sh
停止所有服務
sbin/stop-all.sh
檢視Yarn是否啟動正常
jps
NameNode應該要有
ResourceManager
NodeManager
NameNode
DataNode
SecondaryNameNode


DataNode上應該要有
DataNode
NodeManager


使用網頁檢視
檢視HDFS
http://hadoop1:50070
檢視Yarn
http://hadoop1:8080


參考
Hadoop MapReduce Next Generation - Cluster Setup


← 讀取CSV檔的方法

你可能感兴趣的:(SAM的程式筆記)