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檔的方法