-
Notifications
You must be signed in to change notification settings - Fork 0
/
prayaman.sh
executable file
·345 lines (283 loc) · 11.3 KB
/
prayaman.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
#!/bin/sh
#
# Users and Groups
# it is best to run the various daemons with separate accounts
#
# User which will own the HDFS services.
HDFS_USER=$USER ##CHANGEME
# User which will own the YARN services.
YARN_USER=$USER ##CHANGEME
# User which will own the MapReduce services.
MAPRED_USER=$USER ##CHANGEME
# A common group shared by services.
HADOOP_GROUP=$USER
installHadoop(){
wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.3.0-cdh5.0.1.tar.gz
tar -zxvf hadoop-2.3.0-cdh5.0.1.tar.gz
sudo mv hadoop-2.3.0-cdh5.0.1 /usr/local/
##ADD HADOOP_HOME to ~/.bash_profile
}
hadoopConfig(){
cp -R etc/hadoop/* $HADOOP_HOME/etc/hadoop/
}
prayamanUsers(){
# For Ubuntu
echo
echo "#######################################################################"
echo "[info] Create group hadoop"
echo "#######################################################################"
sudo groupadd $HADOOP_GROUP
echo
echo "#######################################################################"
echo "[info] Create user hdfs"
echo "#######################################################################"
sudo useradd -G $HADOOP_GROUP $HDFS_USER
echo
echo "#######################################################################"
echo "[info] Create $HDFS_USER user home dir"
echo "#######################################################################"
sudo mkdir -p $HOME/$HDFS_USER
sudo chmod -R 700 $HOME/$HDFS_USER
sudo chown -R $HDFS_USER:$HADOOP_GROUP $HOME/$HDFS_USER
cat << EOF | sudo -u $HDFS_USER ssh-keygen
EOF
sudo -u $HDFS_USER sh -c "cat /home/$HDFS_USER/.ssh/id_rsa.pub >> /home/$HDFS_USER/.ssh/authorized_keys"
echo
echo "#######################################################################"
echo "[info] Create user $YARN_USER"
echo "#######################################################################"
sudo useradd -G $HADOOP_GROUP $YARN_USER
echo
echo "#######################################################################"
echo "Create $YARN_USER user home dir"
echo "#######################################################################"
sudo mkdir -p $HOME/$YARN_USER
sudo chmod -R 700 $HOME/$YARN_USER
sudo chown -R $YARN_USER:$HADOOP_GROUP $HOME/$YARN_USER
cat << EOF | sudo -u $YARN_USER ssh-keygen
EOF
sudo -u $YARN_USER sh -c "cat /home/$YARN_USER/.ssh/id_rsa.pub >> /home/$YARN_USER/.ssh/authorized_keys"
echo
echo "#######################################################################"
echo "[info] Create user $MAPRED_USER"
echo "#######################################################################"
sudo useradd -G $HADOOP_GROUP $MAPRED_USER
echo
echo "#######################################################################"
echo "Create mapred user home dir"
echo "#######################################################################"
sudo mkdir -p $HOME/$MAPRED_USER
sudo chmod -R 700 $HOME/$MAPRED_USER
sudo chown -R $MAPRED_USER:$HADOOP_GROUP $HOME/$MAPRED_USER
cat << EOF | sudo -u $MAPRED_USER ssh-keygen
EOF
sudo -u $MAPRED_USER sh -c "cat $HOME/$MAPRED_USER/.ssh/id_rsa.pub >> $HOME/$MAPRED_USER/.ssh/authorized_keys"
}
prayamanJava(){
# set same java home for all users
JAVA_HOME="$JAVA_HOME" # get java home from current user's environment
echo "[INFO] : Setting JAVA HOME to '> $JAVA_HOME '"
sudo sh -c "echo export JAVA_HOME=$JAVA_HOME > /etc/profile.d/java.sh"
#To make sure JAVA_HOME is defined for this session, source the new script:
source /etc/profile.d/java.sh
}
prayamanDirectories(){
#
# Directories Script
#
#
# Hadoop Service - HDFS
#
# Space separated list of directories where NameNode will store file system image.
# For example, /grid/hadoop/hdfs/nn /grid1/hadoop/hdfs/nn
DFS_NAME_DIR=/hadoop/hdfs/nn
# Space separated list of directories where DataNodes will store the blocks.
# For example, /grid/hadoop/hdfs/dn /grid1/hadoop/hdfs/dn
DFS_DATA_DIR=/hadoop/hdfs/dn
# Directory to store the HDFS logs.
HDFS_LOG_DIR=/var/log/hadoop/hdfs
# Directory to store the HDFS process ID.
HDFS_PID_DIR=/var/pid/hadoop/hdfs
#
# Hadoop Service - YARN
#
# Space separated list of directories where YARN will store temporary data.
# For example, /grid/hadoop/yarn/local /grid1/hadoop/yarn/local
YARN_LOCAL_DIR=/hadoop/yarn/local
# Directory to store the YARN logs.
YARN_LOG_DIR=/var/log/hadoop/yarn
# Space separated list of directories where YARN will store container log data.
# For example, /grid/hadoop/yarn/logs /grid1/hadoop/yarn/logs
YARN_LOCAL_LOG_DIR=/hadoop/yarn/logs
# Directory to store the YARN process ID.
YARN_PID_DIR=/var/pid/hadoop/yarn
#
# Hadoop Service - MAPREDUCE
#
# Directory to store the MapReduce daemon logs.
MAPRED_LOG_DIR=/var/log/hadoop/mapred
# Directory to store the mapreduce jobhistory process ID.
MAPRED_PID_DIR=/var/pid/hadoop/mapred
echo
echo "#######################################################################"
echo "Create namenode dir"
echo "#######################################################################"
sudo mkdir -p $DFS_NAME_DIR
sudo chmod -R 755 $DFS_NAME_DIR
sudo chown -R $HDFS_USER:$HADOOP_GROUP $DFS_NAME_DIR
echo
echo "#######################################################################"
echo "Create datanode dir"
echo "#######################################################################"
sudo mkdir -p $DFS_DATA_DIR
sudo chmod -R 755 $DFS_DATA_DIR
sudo chown -R $HDFS_USER:$HADOOP_GROUP $DFS_DATA_DIR
echo
echo "#######################################################################"
echo "Create hdfs log dir"
echo "#######################################################################"
sudo mkdir -p $HDFS_LOG_DIR
sudo chmod -R 755 $HDFS_LOG_DIR
sudo chown -R $HDFS_USER:$HADOOP_GROUP $HDFS_LOG_DIR
echo
echo "#######################################################################"
echo "Create hdfs pid dir"
echo "#######################################################################"
sudo mkdir -p $HDFS_PID_DIR
sudo chmod -R 777 $HDFS_PID_DIR
sudo chown -R $HDFS_USER:$HADOOP_GROUP $HDFS_PID_DIR
echo
echo "#######################################################################"
echo "Create yarn local dir"
echo "#######################################################################"
sudo mkdir -p $YARN_LOCAL_DIR
sudo chmod -R 755 $YARN_LOCAL_DIR
sudo chown -R $YARN_USER:$HADOOP_GROUP $YARN_LOCAL_DIR
echo
echo "#######################################################################"
echo "Create yarn local log dir"
echo "#######################################################################"
sudo mkdir -p $YARN_LOCAL_LOG_DIR
sudo chmod -R 755 $YARN_LOCAL_LOG_DIR
sudo chown -R $YARN_USER:$HADOOP_GROUP $YARN_LOCAL_LOG_DIR
echo
echo "#######################################################################"
echo "Create yarn log dir"
echo "#######################################################################"
sudo mkdir -p $YARN_LOG_DIR
sudo chmod -R 755 $YARN_LOG_DIR
sudo chown -R $YARN_USER:$HADOOP_GROUP $YARN_LOG_DIR
echo
echo "#######################################################################"
echo "Create yarn pid dir"
echo "#######################################################################"
sudo mkdir -p $YARN_PID_DIR
sudo chmod -R 777 $YARN_PID_DIR
sudo chown -R $YARN_USER:$HADOOP_GROUP $YARN_PID_DIR
echo
echo "#######################################################################"
echo "Create mapreduce log dir"
echo "#######################################################################"
sudo mkdir -p $MAPRED_LOG_DIR
sudo chmod -R 755 $MAPRED_LOG_DIR
sudo chown -R $MAPRED_USER:$HADOOP_GROUP $MAPRED_LOG_DIR
echo
echo "#######################################################################"
echo "Create mapreduce pid dir"
echo "#######################################################################"
echo
sudo mkdir -p $MAPRED_PID_DIR
sudo chmod -R 777 $MAPRED_PID_DIR
sudo chown -R $MAPRED_USER:$HADOOP_GROUP $MAPRED_PID_DIR
}
configureProtoc(){
sudo apt-get install -y gcc g++ make maven cmake zlib zlib1g-dev libcurl4-openssl-dev
curl -# -O https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
gunzip protobuf-2.5.0.tar.gz
tar -xvf protobuf-2.5.0.tar
cd protobuf-2.5.0
./configure --prefix=/usr
make
sudo make install
}
configureHadoopLib(){
echo
echo "#######################################################################"
echo "[INFO] installing required libraries"
echo "#######################################################################"
sudo apt-get install -y build-essential
sudo apt-get install -y g++ autoconf automake
sudo apt-get install -y zlib1g-dev cmake pkg-config libssl-dev
sudo apt-get install -y zlib1g-dev
sudo apt-get install -y libssl-dev
cd $HADOOP_HOME/src
echo
echo "#######################################################################"
echo "[INFO] Packaging hadoop source"
echo "#######################################################################"
#mvn package -Pdist,native -Dskiptests -Dtar
mvn -e package -Dmaven.javadoc.skip=true -Pdist,native -DskipTests -Dtar
echo
echo "#######################################################################"
echo "[INFO] Packaging hadoop source - completed"
echo "#######################################################################"
cp $HADOOP_HOME/src/hadoop-dist/target/hadoop-2.3.0-cdh5.0.1/lib/native/* $HADOOP_HOME/lib/native/
#cat ~/.bash_profile > export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
#cat ~/.bash_profile > export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
}
configureHadoop(){
cp -R ../hadoop-install/etc/hadoop/* $HADOOP_HOME/etc/hadoop/
}
configureHDFSdirs(){
echo
echo "#######################################################################"
echo "[info] create dir history"
echo "#######################################################################"
hdfs dfs -mkdir -p /user/log/history
## sudo -u hdfs hdfs dfs -mkdir -p /user/log/history
echo
echo "#######################################################################"
echo "[info] set permission to hostory"
echo "#######################################################################"
## sudo -u hdfs hdfs dfs -chmod -R 1777 /user/log/history
hdfs dfs -chmod -R 1777 /user/log/history
echo
echo "#######################################################################"
echo "[info] set permission to history (for mapred) "
echo "#######################################################################"
## sudo -u hdfs hdfs dfs -chown mapred:hadoop /user/log/history
hdfs dfs -chown $MAPRED_USER:$HADOOP_GROUP /user/log/history
echo
echo "#######################################################################"
echo "[info] create /tmp"
echo "#######################################################################"
## sudo -u hdfs hadoop fs -mkdir /tmp
hadoop fs -mkdir /tmp
echo
echo "#######################################################################"
echo "[info] set permission to /tmp"
echo "#######################################################################"
##sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
hadoop fs -chmod -R 1777 /tmp
}
startHadoop(){
#Start all hadoop daemons
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
$HADOOP_HOME/sbin/yarn-daemon.sh start proxyserver
#Show started daemons
#$JAVA_HOME/bin/jps
}
prayaman(){
#installHadoop
prayamanJava
prayamanUsers
#prayamanDirectories
#configureProtoc
#configureHadoopLib
#configureHDFSdirs
#configureHadoop
startHadoop
}
prayaman