1. 程式人生 > >hadoop2.6.0-cdh5.7.1偽分散式編譯安裝

hadoop2.6.0-cdh5.7.1偽分散式編譯安裝

環境相關:

OS:CentOS release 6.9
IP:192.168.1.10
MEM:10G(推薦4G以上)
DISK:50G

1. 主機克隆,基礎環境部署

參照《CentOS6實驗機模板搭建部署》
克隆一臺實驗機,調整記憶體為10G,並進一步配置主機名和hosts檔案:

hostname hadoop001
echo "$(grep -E '127|::1' /etc/hosts)">/etc/hosts
echo "$(ifconfig eth0|grep inet|awk -F'[ :]' '{print $13}') $(hostname)">>/etc/hosts
sed -i "s/^HOSTNAME.*$/HOSTNAME=$(hostname)
/g"
/etc/sysconfig/network ping -c 3 $(hostname)

檢查並關閉iptables和selinux,模板機克隆前已經關閉。

2. 編譯環境準備

編譯工作需要以下環境支援:
jdk1.7(不支援jdk1.8)
apache-maven-3
protobuf-2.5.0
findbugs-1.3.9
gcc gcc-c++ make cmake
openssl zlib ncurses snappy bzip2
lzo lzop autoconf automake

配置jdk1.7:

mkdir /usr/java
cd
/usr/java/ tar -xf /tmp/server-jre-7u80-linux-x64.tar.gz chown root: /usr/java/jdk1.7.0_80/ -R echo 'export JAVA_HOME=/usr/java/jdk1.7.0_80'>>/etc/profile # 環境變數PATH最後設定

配置maven:

cd /usr/local/
yum -y install unzip
unzip /tmp/apache-maven-3.3.9-bin.zip
chown root: /usr/local/apache-maven-3.3.9 -R
echo 'export MAVEN_HOME=/usr/local/apache-maven-3.3.9'
>>/etc/profile echo 'export MAVEN_OPTS="-Xms256m -Xmx512m"'>>/etc/profile # 環境變數PATH最後設定

編譯安裝protobuf:

yum -y install gcc gcc-c++ make cmake
cd /tmp/
tar -xf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./configure --prefix=/usr/local/protobuf
make && make install
echo 'export PROTOC_HOME=/usr/local/protobuf'>>/etc/profile
# 環境變數PATH最後設定

配置findbugs:

cd /usr/local/
unzip /tmp/findbugs-1.3.9.zip
chown root: findbugs-1.3.9 -R
echo 'export FINDBUGS_HOME=/usr/local/findbugs-1.3.9'>>/etc/profile
# 環境變數PATH最後設定

最終PATH變數和其他依賴包的安裝

echo "export PATH=\
\$FINDBUGS_HOME/bin:\
\$PROTOC_HOME/bin:\
\$MAVEN_HOME/bin:\
\$JAVA_HOME/bin:\
\$PATH">>/etc/profile
source /etc/profile
java -version
mvn -version
protoc --version
findbugs -version
# 測試java和maven以及protoc和findbugs是否配置成功
yum install -y openssl openssl-devel \
    svn ncurses-devel zlib-devel libtool \
    snappy snappy-devel bzip2 bzip2-devel \
    lzo lzo-devel lzop autoconf automake \
    openssh-clients

3. 編譯hadoop2.6-cdh5.7.1的安裝包

cd /tmp
tar -xf hadoop-2.6.0-cdh5.7.1-src.tar.gz
cd hadoop-2.6.0-cdh5.7.1
mvn clean package -Pdist,native -DskipTests -Dtar
# 該步需要通過網路下載和編譯,耗時較長
# 引數解釋:
# clean package 清除原來的包
# -Pdist,native 將生成的包放入本地的dist目錄
# -DskipTests 忽略測試
# -Dtar 生成tar包
# 編譯生成 hadoop-2.6.0-cdh5.7.1.tar.gz
# 目錄:/tmp/hadoop-2.6.0-cdh5.7.1/hadoop-dist/target
# 可以將編譯生成的tar包儲存下來,就不用再次編譯了。

編譯出來的安裝包的部署不在需要findbugs和maven以及protobuf,只需要jdk即可。
可以重新克隆一臺實驗機,然後配置jdk,也可以清掉編譯機器的環境進行部署:

cd /usr/local/
rm -rf findbugs-1.3.9 apache-maven-3.3.9 protobuf
sed -i '/^export MAVEN_HOME=/d'    /etc/profile
sed -i '/^export MAVEN_OPTS=/d'    /etc/profile
sed -i '/^export FINDBUGS_HOME=/d' /etc/profile
sed -i '/^export PROTOC_HOME=/d'   /etc/profile
sed -i '/^export PATH=/d'          /etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH'>>/etc/profile
source /etc/profile

4. 偽分散式配置HDFS

新增hadoop使用者,配置sudo許可權:

useradd hadoop
echo hadoop|passwd --stdin hadoop
sed -i 's/^root.*/&\nhadoop  ALL=(ALL)       ALL/g' /etc/sudoers

安裝編譯生成的hadoop包:

cd /usr/local
tar -xf /tmp/hadoop-2.6.0-cdh5.7.1.tar.gz
chown hadoop: hadoop-2.6.0-cdh5.7.1 -R
ln -s hadoop-2.6.0-cdh5.7.1/ hadoop
cd hadoop
echo 'export HADOOP_HOME=/usr/local/hadoop'>>/etc/profile
echo 'export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH'>>/etc/profile
source /etc/profile

切換到hadoop使用者,配置ssh互信

su - hadoop
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
ssh -o StrictHostKeyChecking=no localhost date
ssh -o StrictHostKeyChecking=no 127.0.0.1 date
ssh -o StrictHostKeyChecking=no $(hostname) date

配置HDFS:

cd /usr/local/hadoop
vi etc/hadoop/core-site.xml
# 在<configuration>這裡新增配置</configuration>
# 新增完配置之後如下:
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop001:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>
</configuration>

vi etc/hadoop/hdfs-site.xml
# 在<configuration>這裡新增配置</configuration>
# 新增完配置之後如下:
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop001:50090</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.https-address</name>
        <value>hadoop001:50091</value>
    </property>
</configuration>

cd /usr/local/hadoop/etc/hadoop
echo $(hostname)>slaves
# 修改hadoop的slave的解析地址

格式化namenode,啟動HDFS:

cd /usr/local/hadoop/sbin/
sed -i "s#^usage#HADOOP_PID_DIR=$HADOOP_HOME/run\n&#g" hadoop-daemon.sh
# 修改PID檔案的位置,從/tmp/移到$HADOOP_HOME/run之下
cd /usr/local/hadoop/etc/hadoop/
sed -i "s#export JAVA_HOME=.*#export JAVA_HOME=$JAVA_HOME#g" hadoop-env.sh
hdfs namenode -format
start-dfs.sh

程序狀態檢視:

jps
# 檢視NameNode、SecondaryNameNode和DataNode是否啟動
# 網頁訪問:
# http://192.168.1.10:50070

5. 偽分散式配置MR和Yarn

MR配置部署:

cd /usr/local/hadoop/etc/hadoop
cp -av mapred-site.xml{.template,}
vi mapred-site.xml
# 在<configuration>這裡新增配置</configuration>
# 新增完配置之後如下:
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

YARN配置部署:

vi yarn-site.xml
# 在<configuration>這裡新增配置</configuration>
# 新增完配置之後如下:
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

啟動:

cd /usr/local/hadoop/sbin/
sed -i "s#^usage#YARN_PID_DIR=$HADOOP_HOME/run\n&#g" yarn-daemon.sh
# 修改PID檔案的位置,從/tmp/移到$HADOOP_HOME/run之下
start-yarn.sh
# 啟動yarn
# 訪問http://192.168.77.10:8088

6. 測試

執行一個 MapReduce job 進行測試:

cd /usr/local/hadoop/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.1.jar pi 5 10
# http://192.168.1.10:8088/cluster/apps
# 網頁檢視

7. 設定開機啟動

設定開機自動啟動HDFS和YARN:

echo "/bin/su - hadoop -c '/usr/local/hadoop/sbin/start-all.sh'">>/etc/rc.local
# 使用root許可權設定,重啟測試。

若澤大資料交流群:671914634
[TOC]